从JavaScript调用href

9
这是与这个问题相同的问题,我不能再回答了,所以我用我的账户重新发布它。
对于混乱感到抱歉。
我需要一个Greasemonkey脚本,在页面加载时激活一个类似'javascript:FUNCTION'的href链接。 我见过这段代码:
<script language="Javascript" type="text/javascript">
    function somescript() {
            window.location.href = document.getElementById('ololo').href;
    }
</script>

<a href="javascript:alert('test');" id="ololo">test</a>
<br />

<a href="javascript:somescript()">click me</a>

虽然在本地页面上使用onload时可以正常工作,但在脚本中使用时却无法正常工作。

可能是我在将代码从html页面的body部分转移到Greasemonkey脚本时遗漏了某些内容。

希望这次问题更加清晰明确,对于任何误解,请原谅,因为我仍然是JS的初学者。


1
脚本仍在开发中,但我需要的功能是应该先工作的第一个功能,否则其他任何功能都不会起作用。为了保持更清晰:脚本的其余部分与此功能不冲突。 - Gurzo
没有错误,只是它不起作用。这就是为什么我甚至不知道它哪里出了问题。请纠正我,要将该函数导出为 Greasemonkey 函数,我是否应该放弃 <script> 标签? - Gurzo
2
如果你需要严肃的 Greasemonkey 帮助,请在 userscripts.org 上提问。 - Jonno_FTW
你的JS脚本中不应该有任何HTML标签。如果有,它会给你一个错误(工具>错误控制台)。请发布你的脚本。我无法读取你的思想。 - Yacoby
3个回答

24

我是这样解决的:

window.location=document.getElementById('foo').href;

感谢所有人的回答。


5
<script type="text/javascript">
    function somescript() {
        eval(document.getElementById('ololo').getAttribute('href').replace('javascript:', ''));
    }
</script>

我能看到警示框。

请注意,这只有在将其 JavaScript 代码嵌入 href 属性时才起作用...


如果你想要模拟点击链接,这里有一个例子...但是没有第三方库似乎需要很多工作:http://groups.google.com/group/comp.lang.javascript/browse_thread/thread/27e7c70e51ff8a99/98cea9cdf065a524%2398cea9cdf065a524?pli=1 - Mike Gleason jr Couturier

1

这个方案适用于你的情况吗?

<script type="text/javascript">
  function somescript() {
    document.getElementById('ololo').click();//fake a click on the link
  }
</script>

它不起作用。 有可能某个网站禁止这种操作吗? - Gurzo
jQuery库提供了一个跨浏览器的函数来“点击”链接/按钮,以便它可以工作。不过,他们是如何做到的,应该在他们的源代码中看到... - Mike Gleason jr Couturier
1
如果将一个jQuery点击事件绑定到该元素上,这可能会起作用。 - Alex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接