gpt4 book ai didi

javascript - 创建一个链接以在另一个窗口中运行 javascript

转载 作者:行者123 更新时间:2023-11-28 18:54:35 24 4
gpt4 key购买 nike

我有一个链接,单击该链接时我想打开一个新窗口,并在该窗口中运行一些 javascipt 代码。这就是我创建链接的方式:

$('<a></a>').attr('href', 'javascript:my_func();').attr('target', '_blank')

my_func 已运行(我在其中设置了断点并确认了这一点),并且没有错误。但新窗口并未创建。我怎样才能做到这一点?

编辑:尝试实现@Barmar建议的解决方案。现在这是我的代码:

lwv = load_wafer_viz_on_new_page.toString();
args = '"'+url+'","'+neighbor.data[0]+'","'+date+'"';
lwv += 'load_wafer_viz_on_new_page(' + JSON.stringify(args) + ');'
$('<a></a>').attr('href', 'javascript:var w = window.open();w.innerHTML = "<html><head></head></html>";var script = w.document.createElement("script");script.textContent = lwv;w.document.getElementsByTagName("head")[0].appendChild(script);');

我收到一个空白页。如何将此解决方案合并到我的可点击链接中?

最佳答案

创建窗口,然后注入(inject) <script>标记到其 DOM 中。

var w = window.open();
w.innerHTML = '<html><head></head></html>';
var script = w.document.createElement("script");
script.textContent = "alert('running');";
w.document.getElementsByTagName("head")[0].appendChild(script);

DEMO

如果你想将函数定义放入窗口然后调用该函数,你可以这样做:

script.textContent = functionName.toString();
script.textContent += 'functioName(' + JSON.stringify(arg) + ');'

这是代码的工作版本:

neighbor = {
data: [1, 2, 3]
}
date = "today";
function load_wafer_viz_on_new_page(a, b) {
alert(a + b);
}
window.lwv = load_wafer_viz_on_new_page.toString();
args = JSON.stringify(neighbor.data[0]) + ',' + JSON.stringify(date);
lwv += 'load_wafer_viz_on_new_page(' + args + ');'
$("a").attr('href', 'javascript:var w = window.open();w.innerHTML = "<html><head></head></html>";var script = w.document.createElement("script");script.textContent = lwv;w.document.getElementsByTagName("head")[0].appendChild(script);');

DEMO

关于javascript - 创建一个链接以在另一个窗口中运行 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33881287/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com