javascript - 在弹出窗口中加载 javascript 依赖项

标签 javascript jquery d3.js

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

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

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

 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 毫秒后触发该调用,但没有成功。

谢谢。

最佳答案

试试这个人做了什么: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);

等等

关于javascript - 在弹出窗口中加载 javascript 依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35761094/

相关文章:

javascript - 如何强制 Accordion 一次打开一个?

d3.js - 将圆附加到 d3 中的 map

javascript - 覆盖 Array 构造函数不会影响 [],对吗?

javascript - 在angularjs中按多种尺寸过滤产品

javascript - 如何使用匹配的正则表达式获取多行文本的最后一行?

javascript - d3js : adding same type of elements with different data

javascript - 如何在 d3 中不同尺寸的矩形之间绘制有向箭头?

javascript - 如何将axios返回的json保存在变量中?

javascript - 来自 jquery 的 aspx 错误绑定(bind)

javascript - 向 jQuery DatePicker 添加回调的正确方法