【问题标题】:Executes js code after redirect to another url重定向到另一个 url 后执行 js 代码
【发布时间】:2015-10-20 02:37:28
【问题描述】:

我有一个如下页面,当用户点击Go href 时,它会重定向到另一个页面。我想在页面完全加载后对重定向的页面进行一些 JS 操作,但在执行此操作时遇到了麻烦。

我试图通过将所有 JS 操作语句放入 setTimeout 函数来实现这一点,但似乎在重定向页面加载后这些语句将不会执行。在下面的例子中,alert('in settimeout') 没有被执行。

你能告诉我如何做到这一点吗?谢谢!

<!DOCTYPE html>
<html>
<body>
<a href="#" onclick="foo()">Go</a>

<script>
function foo(){
  setTimeout(function (){
    alert('in settimeout'); // **this will not be executed.**
    //js manipulations here ... 
  }, 5000);
  window.location.replace('http://onlineapp.ws');
}
</script>
</body>
</html>

【问题讨论】:

    标签: javascript html redirect


    【解决方案1】:

    在销毁运行 JavaScript 的环境后,您将无法运行 JavaScript。离开页面将破坏该环境。

    这样做的唯一方法是:

    • 在框架中加载新页面(新页面必须位于the same origin),然后使用frames API 访问它。
    • 将一些信息传递给托管新页面的服务器(例如,通过查询字符串)并读取该信息以确定 JS 是否应该运行

    【讨论】:

    • 感谢您的回答!那么在重定向到另一个域时就不可能做到这一点?
    • 正确。除非另一个域做出认真的努力来允许它,否则一个站点上的 JavaScript 不能为其访问者更改另一个站点。那将是一个可怕的安全问题。
    • @Quentin 因此,如果我的本地机器上有一些 html/javascript,并且我想在表单中填写文本输入,并且一旦我提交表单,请使用该文本信息单击我被重定向到的页面......我能做到这一点的唯一方法是向重定向 url 添加某种唯一的散列标识符?
    • @MikeSandstrom — 不,因为 JS 不会在具有唯一哈希标识符的页面上运行。如果您在本地工作,请编写浏览器扩展程序。
    • 非常感谢您让我了解浏览器扩展,它们似乎非常有用。是否可以编写一个浏览器扩展程序,从一个页面复制信息并使用该信息在另一页面上填写表单?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-23
    • 1970-01-01
    • 1970-01-01
    • 2016-01-10
    相关资源
    最近更新 更多