Lui*_*lli 2 javascript window.open
我正在尝试在新选项卡中运行脚本.我使用的代码是这样的:
$ = jQuery;
function openAndPush(url, id) {
var win = window.open('https://example.com' + url + '?view=map');
var element = $('<script type="text/javascript">console.log("Starting magic...");var region_id='+id+';$=jQuery;var p=$(\'div["se:map:paths"]\').attr(\'se:map:paths\');if(p){console.log("Found! pushing..."); $.get(\'https://localhost:9443/addPolygon\', {id: region_id, polygon: p}, function(){console.log("Done!")})}else{console.log("Not found!");}</script>').get(0);
setTimeout(function(){ win.document.body.appendChild(element);
console.log('New script appended!') }, 10000);
}
Run Code Online (Sandbox Code Playgroud)
考虑以下因素:
openAndPush('/target', 1)),然后检查另一个检查器中的代码时,一个用于新窗口,Starting magic...未显示控制台消息(我等待10秒甚至更多).但是,新的DOM元素(我正在创建的这个脚本)显示在Elements选项卡中(并且,在第一个控制台/检查器中,我可以看到该New script appended!消息).(在两种情况下jQuery都存在,但不占用$标识符,这似乎是未定义的 - 所以我手动占用它)
我得出的结论是我的脚本没有在新窗口中执行.
我错过了什么?如何确保代码正在执行?
为什么不将您想要在另一个选项卡中运行的代码包装到一个函数中,然后将其绑定到新选项卡的窗口然后调用该函数.这是我在浏览器的控制台中运行的代码,而不是在文档中嵌入脚本元素.它对我有用,即打开另一个标签并显示警报.
function openAndPush(url, id) {
var win = window.open('https://www.google.com');
win.test = function () {
win.alert("Starting magic...");
}
win.test();
setTimeout(function () {
win.document.body.appendChild(element);
console.log('New script appended!')
}, 10000);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
916 次 |
| 最近记录: |