如何从新窗口访问 jQuery?



在我的应用程序中,我打开了一个带有var w = window.open()的新窗口。我通过以下方式访问 CanvasJS API:

var canvas = w.document.createElement('script');
canvas.type = "text/javascript";
canvas.src = "https://canvasjs.com/assets/script/canvasjs.min.js";
w.document.head.appendChild(canvas);

这工作得很好。我对jQuery做了同样的事情,并确保在我自己的脚本之前附加它,但我得到这个错误:ReferenceError: $ is not defined

这是我的代码的样子:

var w = window.open('','_blank',width,height);
w.document.body.innerHTML = '<body> //create chart container here </body>';
var jQuery = w.document.createElement('script');
var canvas = w.document.createElement('script');
var script = w.document.createElement('script');
canvas.type = "text/javascript";
canvas.src = "https://canvasjs.com/assets/script/canvasjs.min.js";
jQuery.type = "text/javascript";
jQuery.src = "https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js";
script.textContent = "//my script content here, this is where I use the '$' jQuery object";
w.document.head.appendChild(jQuery);
w.document.head.appendChild(canvas);
w.document.head.appendChild(script);

即使您在头部插入了脚本标签,但这并不意味着脚本已完全下载。您的代码在浏览器能够下载 jQuery 之前运行。动态插入的脚本标记执行异步操作。

我建议你设置一个间隔并检查jQuery是否可用。一旦可用,请执行您的代码。将为 jQuery 创建的脚本元素命名为其他名称,因为它会干扰在间隔内检查 jquery。

var jqueryCheck = setInterval(function() {
if(window.jQuery) {
clearInterval(jqueryCheck); 
// execute your code
}
}, 100);

最新更新