如何在调用window.location.href之后运行函数?

时间:2019-03-24 23:58:21

标签: javascript html

我试图重定向到另一个站点,然后在其上运行代码。

function gotonewpage() {
  window.location.href = "WEBSITE"
  x = document.getElementById("s")
}

4 个答案:

答案 0 :(得分:1)

除非您控制要重定向到的站点,否则这是不可能的。

答案 1 :(得分:0)

恐怕这是不可能的,我认为这样做的唯一方法是通过反映的xss(假设这不是您的网站)

答案 2 :(得分:0)

如上所述,您必须控制另一页。如果在同一站点上,则可以在一个框架中打开它。 iframe |新窗口和javascript可以与该框架通信,但是您不能关闭当前窗口(调用该窗口时脚本消失)。如果域与“完全匹配”不匹配,则会生成错误。您无法在域和该域的子域之间进行通信。

您的代码执行以下操作:

function gotonewpage() {
  window.location.href = "WEBSITE"
// current window with script goes away.
    x = document.getElementById("s") // this code never sees the light of day.
}

此代码访问同一域中iframe的元素。

<iframe id="frame" src="contents.htm"></iframe>

   MySite=document.getElementById("frame");
   x = MySite.contentDocument.getElementById("s");

对于弹出式换向是通过消息。

   MyChildMySite = window.open("website");
   MyChildMySite.ProcessParentMessage('Message to the child');

在“子级”页面上,相同的域

function ProcessParentMessage(message) {
    window.opener.ProcessChildMessage(document.getElementById("s"));
}

并返回父页面,相同域

function ProcessChildMessage(s) {
    x = s;
    // not sure what you want to do from here.
}

让我补充一下,浏览器非常重视安全性;如果您在实施中发现安全错误,请与他们联系以获取可能的奖励。

答案 3 :(得分:0)

好吧,window.location.href会重新加载应用程序,其余的代码将永远没有机会执行它。

就像在函数中的return关键字之后使用语句一样。

function sum(a, b) {
   var sum;
   return sum;

   sum = a + b; // this will never execute
}

但是你能做什么, 重定向发生后,您可以添加此

x = document.getElementById("s")

在发生重定向的文件中。但恐怕您也必须在新文件中添加ID为s的元素。