如何从新窗口访问jQuery?

时间:2017-08-01 15:00:40

标签: javascript jquery window

在我的应用中,我使用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);

1 个答案:

答案 0 :(得分:0)

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

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

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