Javascript 如何从新窗口访问jQuery?
在我的应用程序中,我用Javascript 如何从新窗口访问jQuery?,javascript,jquery,window,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);
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:$未定义
下面是我的代码的样子:
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);
var w=window.open(空白、宽度、高度);
w、 document.body.innerHTML='//在此处创建图表容器';
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=“//这里是我的脚本内容,这是我使用“$”jQuery对象的地方”;
w、 document.head.appendChild(jQuery);
w、 document.head.appendChild(画布);
w、 document.head.appendChild(脚本);
即使在头部插入了脚本标记,但这并不意味着脚本已完全下载。代码在浏览器能够下载jQuery之前运行。动态插入的脚本标记执行异步操作
我建议您设置一个间隔并检查jQuery是否可用。一旦可用,就执行代码。将为jQuery创建的脚本元素命名为其他名称,因为它会干扰在您的时间间隔内检查jQuery
var jqueryCheck = setInterval(function() {
if(window.jQuery) {
clearInterval(jqueryCheck);
// execute your code
}
}, 100);
即使您已在头部插入了脚本标记,但这并不意味着脚本已完全下载。代码在浏览器能够下载jQuery之前运行。动态插入的脚本标记执行异步操作 我建议您设置一个间隔并检查jQuery是否可用。一旦可用,就执行代码。将为jQuery创建的脚本元素命名为其他名称,因为它会干扰在您的时间间隔内检查jQuery
var jqueryCheck = setInterval(function() {
if(window.jQuery) {
clearInterval(jqueryCheck);
// execute your code
}
}, 100);
动态添加的脚本异步加载,完成加载的顺序不同。动态添加的脚本异步加载,完成加载的顺序不同。就是这样!谢谢你,我会在可能的时候标记你的答案。就是这样!谢谢,我会在可能的时候记下你的答案。