是否可以使用window.location.href在新窗口中执行javascript ?

Is it possible to execute a javascript in a new window with window.location.href?

本文关键字:窗口 执行 javascript 新窗口 可以使 window location href 是否      更新时间:2023-09-26

我正在尝试打开一个新窗口并在新页面上执行javascript代码。

我不太确定为什么它不执行代码-也许这是不可能的-无论如何,新窗口打开,但javascript没有得到执行。

下面是我的代码:

var nstart = window.open("http://examplepage.html");

function loginnow(){
var htmlstring = "javascript: var zTextFields = window.document.getElementsByTagName('"input'"); for (var i=0; i < zTextFields.length; i++) {thefield=zTextFields[i].name; if (!thefield) thefield=zTextFields[i].id; if (thefield == '"login'") zTextFields[i].value='"_ext_cancom'"; if (thefield == '"password'")zTextFields[i].value='"canfinag?!'";} window.document.getElementById('"sign-in'").click();";
nstart.location.href = htmlstring;
}
nstart.addEventListener('load', loginnow, true);

有可能执行这样的代码吗?请帮忙^-^我还使用'''作为转义字符,所以我可以在字符串中使用" -> '"

当我将'"替换为"并直接将其注入页面时,脚本工作正常…

也许你可以添加你想要在新的新页面中执行的javascript,然后让它在文档准备好时运行。所以你可以打开新页面,JS会自动运行

如果新窗口在同一域中,您可以通过这样做来访问内容。

var nstart = window.open("http://examplepage.html");
function loginnow() {
  var zTextFields = nstart.document.getElementsByTagName("input"); 
  for (var i=0; i < zTextFields.length; i++) {
    thefield=zTextFields[i].name;
    if (!thefield) 
      thefield=zTextFields[i].id; 
    if (thefield == "login") 
      zTextFields[i].value="_ext_cancom"; 
    if (thefield == "password")
      zTextFields[i].value="canfinag?!";
  } 
  nstart.document.getElementById("sign-in").click();
}
nstart.addEventListener('load', loginnow, true);

你不应该真的尝试在新窗口中注入代码,但是你可以从父窗口访问dom并运行javascript。