在我的应用中,我使用var w = window.open()
打开一个新窗口。我使用:
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);
答案 0 :(得分:0)
即使您已在脚本中插入脚本标记,但这并不意味着脚本已完全下载。您可以在浏览器下载jQuery之前运行代码。动态插入的脚本标记执行异步操作。
我建议你设置一个间隔并检查jQuery是否可用。一旦可用,执行您的代码。将为jQuery创建的脚本元素命名为其他内容,因为它会干扰在您的间隔内检查jquery。
var jqueryCheck = setInterval(function() {
if(window.jQuery) {
clearInterval(jqueryCheck);
// execute your code
}
}, 100);