链接打开一个新页面并运行JavaScript

时间:2015-04-05 17:31:20

标签: javascript html hyperlink

我想知道如何打开一个页面,然后在该页面上运行javascript(由第一页上的链接设置)。我试过这个: <a href = "http://www.example.com/otherpage" onclick = "javascript_on_otherpage()">LINK DISPLAY NAME HERE</a> 有谁知道如何实现这个目标?

3 个答案:

答案 0 :(得分:1)

如果新页面是您控制其代码的页面,则可以通过链接将查询参数传递给新页面,您可以在新页面中使用javascript检查该查询参数,如果找到,则运行页面加载时页面中的一些代码。

<a href = "http://www.example.com/otherpage?runOnStartup=3">LINK DISPLAY NAME HERE</a>

新页面中的启动javascript将检查runOnStartup查询参数并根据其值运行一些代码。


如果新页面与当前页面的原点相同,则可以在新窗口中打开新页面,然后在打开后,可以在该新窗口中调用该函数。但是,为了做到这一点,你的上一页仍然必须运行。


如果新页面的来源不同而您无法控制该新页面中的代码,那么出于浏览器安全原因,您无法执行所要求的操作。

答案 1 :(得分:0)

这是可能的,没问题。

请注意,IE在DOM的这个区域中存在奇怪的不兼容性。

<!DOCTYPE html>
<html>
<head></head>
<body>
  <a id="foo" href>Click me!</a>

  <script>
    document.getElementById('foo').onclick = onFooClick;

    function onFooClick(e) {
      var scriptToInject, popUp, node, importedNode;

      scriptToInject = 'document.body.innerHTML = "Hello from the injected script!";';
      popUp = window.open('about:blank');
      node = document.createElement('script');
      node.textContent = scriptToInject;
      importedNode = popUp.document.importNode(node, true);
      popUp.document.body.appendChild(importedNode);
    }
  </script>
</body>
</html>

以上版本适用于Mac上的Chrome,Firefox和Safari。

答案 2 :(得分:-1)

  

警告在任何与远程生产相关的计算机中使用以下代码。它很容易受到XSS的影响,并允许任何人在您的网站上运行任何JS代码。这意味着恶意网站可以轻而易举地窃取您的用户。身份和其他敏感数据。我强烈建议我建议不要以任何形式/

使用本答案中描述的方法

Page 1

<a href="mypage.html?javascript=URL_ENCODED_JAVASCRIPT_HERE"></a>

Page 2

<script>
    var javascript = <?=$_GET['javascript'] ?>;
    eval(decodeURIComponent(javascript));
</script>

如果您没有PHP,请使用:

var javascript = window.location.href.match(/[^?=]+$/)[0];

*我还没有对此代码进行测试,因此可能需要一些修复。我也假设你拥有这两个页面。如果目标网页不属于您,则出于安全原因,您无法在其上运行JavaScript。

对您的JavaScript进行网址编码,转到here,输入您的JavaScript,然后点击编码。