diff --git a/dom/base/nsDocument.cpp b/dom/base/nsDocument.cpp index b0c148b052..513f9b7a93 100644 --- a/dom/base/nsDocument.cpp +++ b/dom/base/nsDocument.cpp @@ -4668,8 +4668,16 @@ nsDocument::SetScriptGlobalObject(nsIScriptGlobalObject *aScriptGlobalObject) } } + // BlockOnload() might be called before mScriptGlobalObject is set. + // We may need to add the blocker once mScriptGlobalObject is set. + bool needOnloadBlocker = !mScriptGlobalObject && aScriptGlobalObject; + mScriptGlobalObject = aScriptGlobalObject; + if (needOnloadBlocker) { + EnsureOnloadBlocker(); + } + if (aScriptGlobalObject) { mHasHadScriptHandlingObject = true; mHasHadDefaultView = true;