javascript - OnBeforeUnload behavior is different on second page in Google Chrome -
i'm testing onbeforeunload behavior using code snippet answer.
var onbeforeunload = (function(){ var fdum = new function, affirm = function(){ return true; }; var _reg = function(msg,opts){ opts = opts || {}; var pid = null, pre = typeof opts.prefire == 'function' ? opts.prefire : fdum, callback = typeof opts.callback == 'function' ? opts.callback : fdum, condition = typeof opts.condition == 'function' ? opts.condition : affirm; window.onbeforeunload = function(){ return condition() ? (pre(),settimeout(function(){ pid = settimeout(callback,20); },1),msg) : void 0; } window.onunload = function(){ cleartimeout(pid); }; } var _unreg = function(){ window.onbeforeunload = null; } return { register : _reg, unregister : _unreg }; })(); codes same. if developer console, output follow (make sure tick "preserve log" in chrome):
in page 1 (did not click "next page" hyperlink)
- click "next page" hyperlink, console log should display "navigate ..."
- click "previous page" in browser toolbar > choose "stay on page" > console log displays "why exit?" , "glad stayed"
- click "previous page" in browser toolbar > choose "leave page" > console log displays "why exit?" , "navigate to..."
- click "refresh" in browser toolbar > choose "don't reload" > console log displays "why exit?" , "glad stayed"
- click "refresh" in browser toolbar > choose "reload page" > console log displays "why exit?" , "navigate to..."
in page 2 (after clicked "next page" hyperlink)
- click "next page" hyperlink, console log should display "navigate ..."
- click "previous page" in browser toolbar > choose "stay on page" > console log displays "why exit?" , "glad stayed"
- click "previous page" in browser toolbar > choose "leave page" > console log displays "why exit?", "glad stayed" , "navigate to..."
- click "refresh" in browser toolbar > choose "don't reload" > console log displays "why exit?" , "glad stayed"
- click "refresh" in browser toolbar > choose "reload page" > console log displays "why exit?", "glad stayed" , "navigate to..."
you may notice message "glad stayed" appears in every option on page 2. question is: why behavior changed on page 2? , how make behavior consistent in both pages in chrome?
the above results tested in google chrome v47. behaviors in both pages identical in firefox.
last, test page available here (can't use jsfiddle cannot reproduce onbeforeunload effect)
Comments
Post a Comment