Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从新窗口访问jQuery?_Javascript_Jquery_Window - Fatal编程技术网

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);

动态添加的脚本异步加载,完成加载的顺序不同。动态添加的脚本异步加载,完成加载的顺序不同。就是这样!谢谢你,我会在可能的时候标记你的答案。就是这样!谢谢,我会在可能的时候记下你的答案。