【问题标题】:Loading javascript dependencies in popup window在弹出窗口中加载 javascript 依赖项
【发布时间】:2016-06-16 02:59:47
【问题描述】:

我正在开发一个 .net 项目,我正在使用 jquery 创建一个弹出窗口,如下所示:

var newWindow = window.open("", id,    "resizable=1,status=0,menubar=0,toolbar=0,location=0,top=0,left=0");

然后我将html文档注入其中,

 newWindow.document.write("<!doctype html>" +
                          "<html>" +
                          "<head>" +
                          "<title>" + id + "</title>" +
                          "<link href='" + css + "' type='text/css' rel='stylesheet' />" +
                          "<script src= '/Scripts/d3.min.js' ><\/script/>" +
                          "<script src= '/Scripts/myScript.js' ><\/script/>" +
                          "</head>" +
                          "<body></body>" +
                          "</html>");

myScript.js 中有一些代码使用 d3 并绘制了一些 SVG 内容。 我将这个绘图函数称为如下:

$(newWindow.document).ready(function () {
   newWindow.DrawSvg();
}

但是,d3 未定义会引发错误。 看起来,当我调用该绘图函数时,d3.min.js 没有加载它仍在加载。

我的问题是,如何确保我的子窗口完成加载依赖项?看起来 $(newWindow.document).ready 并没有成功!

补充: 有趣的是,newWindow.DrawSvg() 似乎只在 IE 中有效。 在 Firefox 和 chrome 中,DrawSvg 返回以下错误:

Uncaught TypeError: newWindow.DrawSvg() is not a function

似乎 javascript 功能尚不可用。 我试图附加一个计时器以在 500 毫秒后触发该呼叫,但它不起作用。

谢谢。

【问题讨论】:

标签: javascript jquery d3.js


【解决方案1】:

试试这个人的做法:Waiting for child window loading to complete

基本上:

var newWindow = window.open('child.html')
newWindow.addEventListener('load', newWindow.document.write(...), true);
newWindow.addEventListener('load', runAJAXhere, true);

等等

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-13
    • 1970-01-01
    • 1970-01-01
    • 2016-08-11
    • 2013-05-12
    • 1970-01-01
    相关资源
    最近更新 更多