警惕儿童负荷

我想用 window.open 打开一个窗口,并将一个函数附加到 onload 上。 例如,当子页面加载完成(仅DOM)时,浏览器在子页面中显示警报。 此代码不工作::

var google;
function google(){
    Google = window.open('http://www.google.com/');

   //Dean Edwards/Matthias Miller/John Resig

    /* for Mozilla/Opera9 */
    if (google.document.addEventListener){
        google.document.addEventListener("DOMContentLoaded", pageLoaded, false);
    }

    /* for Internet Explorer */
    /*@cc_on @*/
    /*@if (@_win32)
        google.document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
        var script = google.document.getElementById("__ie_onload");
        script.onreadystatechange = function(){
        if (this.readyState == "complete") {
            pageLoaded();//call the onload handler
        }
        };
    /*@end @*/

    /* for Safari */
    if (/WebKit/i.test(navigator.userAgent)){//sniff
        var _timer = setInterval(function(){
            if (/loaded|complete/.test(google.document.readyState)) {
                pageLoaded();//call the onload handler
            }
        }, 10);
    }

    google.onload = pageLoaded;
}
function pageLoaded(){
    alert('Loading Completed');
}
0
额外
意见: 1
同源-政策。您无法修改外部域文档的代码 - 甚至无法将脚本注入其中。
额外 作者 ThiefMaster,

2 答案

正如所提到的,同样的原产地政策是你的方式

如果我真的必须这样做,我会尝试

function popAndAlert(url) {
  var w = window.open('','mywindow');
  if (w) {
    w.document.write('<body onload="opener.done()">'+
      '<iframe style="width:100%;height:100%" src="'+url+'"></iframe></body>')
    w.document.close();
  }
}
function done() {
  alert('loading completed');
}

在子页面中提醒,改变

onload="opener.done()"

onload="alert('loading complete')"
0
额外

尝试这个:

var google;
function googleload()
{
    Google = window.open('http://www.google.com/');

   //Dean Edwards/Matthias Miller/John Resig

    /* for Mozilla/Opera9 */
    if (google.document.addEventListener)
    {
            google.window.addEventListener("DOMContentLoaded", function(){
                alert('Loading Completed');
            }, false);
    }
    else
    {
        google.window.onload = function(){ //Add window.onload
            alert('Loading Completed');
        };
    }
}
0
额外