使用第三方 Javascript 执行文档的 Javascript 函数?

Executing document's Javascript function by using third-party Javascript?

提问人:Miloš Đakonović 提问时间:9/30/2012 最后编辑:Brian Tompsett - 汤莱恩Miloš Đakonović 更新时间:9/13/2020 访问量:155

问:

假设我有带有一个 Javascript 函数和一个按钮的 localhost/site/index.php:

<html>
<head>
    <meta charset="utf-8" />
    <title>Page Title</title>
<script type="text/javascript">
    function my_function(){
        alert('Hello eveeryone!');
    }
</script>


</head>

<body>

<button type="button" onclick="my_function();" />Here is my button</button>

</body>
</html>

有没有办法在不点击按钮的情况下执行 - 通过使用某种书签或类似类型的浏览器内驻留 Javascript 或其他任何不意味着单击按钮默认与文档的 Javascript 交互的东西?my_function()

编辑: 更好的问题解释: 我可以使用 localhost/site/script.php 来触发位于 localhost/site/index.php 中的上述my_function吗?

javascript dom-events unobtrusive-javascript

评论

0赞 Guffa 9/30/2012
有点模糊...你想完成什么?
0赞 user123444555621 9/30/2012
我认为您说的是用户脚本

答:

0赞 Erwin 9/30/2012 #1

您可以使用 body 函数:onload

<body onload="my_function();">
0赞 Sidharth Mudgal 9/30/2012 #2

您可以使用 jQuery 触发器。

$('button').trigger('click')

调用按钮的 onclick 处理程序。(实际上,所有按钮的 onclick 处理程序都被调用了。因此,也许为特定按钮创建一个类或 ID 来定位它)

0赞 jfriend00 9/30/2012 #3

我假设该网页不是您的,因此您不能直接修改它。因此,如果您有一种在页面上下文(书签或插件或类似的东西)中执行 javascript 的方法,并且您知道点击处理函数的名称是什么,那么您可以直接使用以下命令执行点击处理程序:

my_function()

编辑:因为现在从评论中可以看出,您实际上是在问一个关于您自己网页安全性的问题。

您无法阻止在自己的网页中执行 javascript 函数。人们可以通过多种方式从自己的浏览器将代码注入您的页面,这些浏览器可以调用您网页中可全局访问的任何内容。你无法阻止它。可以使直接调用事件处理程序变得更加困难,但这只会让它稍微增加一些工作,但并不能阻止它。

安全性必须在您的服务器上实现 - 它不能在网页中实现。浏览器客户端网页不是一个安全的环境。它可以自由修改。您尝试防止的任何内容都必须在服务器上实现。

评论

0赞 Miloš Đakonović 9/30/2012
jfriend00 你能把你的答案说得更清楚吗?我担心我的网站安全 - 我有 javascript 函数,不应该在我的网站上下文之外执行,如果可能的话,我应该改变一些东西。我想知道如何才能实现这种执行。谢谢。
0赞 jfriend00 9/30/2012
@Miloshio - 哎呀。如果这是一个关于你自己网页安全性的问题,那么你应该把它放在问题中。然后,您将得到有关安全性的答案,而不是您所做的。为什么人们不陈述他们实际遇到的问题/疑问?
0赞 jfriend00 9/30/2012
@Miloshio - 我在关于网页安全的答案中添加了一些新信息。
0赞 Miloš Đakonović 9/30/2012
谢谢。我认为这是可能的。但是:“人们可以通过多种方式从他们自己的浏览器将代码注入到您的页面中,这些浏览器可以调用您网页中可全局访问的任何内容。 - 我正在学习 JS,我很好奇如何准确地完成我在示例中提出的问题 - 如何在不单击按钮并有权修改 index.php 本身的情况下运行 index.php 的 my_function()?
0赞 jfriend00 9/30/2012
@Miloshio - 有很多方法:书签、浏览器插件、GreaseMonkey 脚本、修改页面的代理、javascript 调试控制台和执行函数、javascript 调试器。我仍然不明白你的问题到底是什么。