【问题标题】:Running Javascript function automatically自动运行Javascript函数
【发布时间】:2011-09-13 20:46:09
【问题描述】:

我发现了一个可以在网页上反转颜色的 javascript 函数:

String javascript = "javascript: (function (){var newSS, styles = '* { background-color: black ! important; color: green !important; }a:link, a:link * { color: green !important; text-style: underline; }a:visited, a:visited * { color: #7f0000 !important; }a:hover, a:hover * { color: red !important; }';var elemHead = document.getElementsByTagName(\"head\")[0];var elemCSS = document.getElementById(\"darkenCSS\");if (elemCSS){elemHead.removeChild(elemCSS);}else{newSS = document.createElement('link');newSS.rel = 'stylesheet';newSS.href = 'data:text/css,' + escape(styles);newSS.id = \"darkenCSS\";elemHead.appendChild(newSS);}})();";

可以自动运行吗? 我的意思是加载 www.google.co.uk 并应用这个 javascript 函数。4

希望这是有道理的,我对 javascript 了解不多。

澄清:

我想知道这个 javascript 函数是否可以附加到 URL。类似http://www.google.com/?Javascript_blah_blah_blah

进一步澄清:

我正在 Android 中制作一个基本的网络浏览器。我想反转网页上的颜色。 我做了一个按钮,在页面上执行这个 javascript。这行得通。但需要用户每次按下按钮。

我想做一个开关来永久倒置。

所以我需要浏览到 url 输入并让它自动反转颜色。

希望对你有帮助

【问题讨论】:

  • 您可能需要为您正在使用的浏览器创建一个扩展程序,以便在每个页面上注入此脚本。
  • 那么,您希望您的浏览器自动运行它并反转您访问的每个页面的颜色吗?您可能可以构建一个 Chrome 或 FireFox 扩展来执行此操作。不过,这就是我所能提供的。
  • 自动部分很难。你不能完全强制另一个站点运行 js。你可以在 Chrome 中构建一个扩展,或者从地址栏或控制台手动运行它...
  • 您可以将其另存为bookmarklet,可以将其放在浏览器的工具栏上,使其成为一键式操作。
  • 如果你要制作一个浏览器,你可以对文档的源代码进行操作——只需将这段代码附加到页面末尾的<script></script>标签内,它就会被执行。直接放引用的JS代码,或者创建一个函数然后使用window.addEventListener/window.setTimeout。

标签: javascript html url


【解决方案1】:

是的,将不带引号的字符串粘贴到地址栏中。确保伪协议javascript: 在开头


rlemon添加

您首先需要修改脚本以取消转义引号,然后在地址栏中添加一个新书签。编辑书签并将位置更改为

javascript:%20(function%20(){var%20newSS,%20styles%20=%20'*%20{%20background-color:%20black%20!%20important;%20color:%20green%20!important;%20}a:link,%20a:link%20*%20{%20color:%20green%20!important;%20text-style:%20underline;%20}a:visited,%20a:visited%20*%20{%20color:%20#7f0000%20!important;%20}a:hover,%20a:hover%20*%20{%20color:%20red%20!important;%20}';var%20elemHead%20=%20document.getElementsByTagName("head")[0];var%20elemCSS%20=%20document.getElementById("darkenCSS");if%20(elemCSS){elemHead.removeChild(elemCSS);}else{newSS%20=%20document.createElement('link');newSS.rel%20=%20'stylesheet';newSS.href%20=%20'data:text/css,'%20+%20escape(styles);newSS.id%20=%20"darkenCSS";elemHead.appendChild(newSS);}})();

你有它!

【讨论】:

  • 但这并不是真正自动的。
  • @patrick,是的。提供的代码需要修改。但它有效。在 Chrome 13 和 FF 6.0.1 中测试
  • 对不起,我没有说清楚......我在 Android WebView 中运行它。我想知道是否有可能有一个 url 并附加这个 javascript 函数来运行。 google.com/?JavaScript...sd..d.d.d.. 之类的东西
  • @rlemon:我的意思是在地址栏中粘贴 javascript 不再适用于 FF。它在 Chrome 中是这样,我错了,所以我更新了我的评论。
【解决方案2】:

不,您不能“只运行”附加到 URL 的 javascript。这是安全漏洞(将会)。但是你可以使用

  • 书签(以javascript:开头的“URL”),
  • 浏览器插件(Chrome/FF/Safari - 都可以)或
  • 您可以寻找可以运行 userscripts 的插件。这有点像 Greasemonkey。

您也可以尝试 Fluid(站点特定浏览器,仅限 MacOS X)...我想您知道了。

顺便说一句,如果您想/需要编写 bookmarlet,您可以在特定站点上运行并希望开始一些东西 - 请查看这篇文章:http://coding.smashingmagazine.com/2010/05/23/make-your-own-bookmarklets-with-jquery/

【讨论】:

  • 不客气。如果你想在你的自定义浏览器中运行 javascript - 你可以实现用户脚本的想法。这样,您可以在浏览器中加载的每个页面上运行任何脚本。不确定它是否可以帮助您,但请看一下 GreaseKit(它是 Safari/WebKit 的用户脚本“插件”)-code.google.com/p/greasekit
【解决方案3】:

如果您使用 Firefox(据说该插件可在 Chrome 和 Opera 中运行,但我从未尝试过),最简单的方法是安装 Greasemonkey 并为您的域/URL 创建一个用户脚本想要 - www.google.co.uk/*www.google.com/* 等。

不过,这样的事情最好用Stylish 扩展来完成,但你只能在那里使用 CSS,不能使用 JavaScript。但是在您介绍的内容中,以下 CSS 片段应该像魅力一样工作:

* { background-color: black ! important; color: green !important; }a:link, a:link * { color: green !important; text-style: underline; }a:visited, a:visited * { color: #7f0000 !important; }a:hover, a:hover * { color: red !important; }

网络上有很多userscriptsuserstyles

【讨论】:

  • 在 Android Webkit 上怎么样。这个问题需要一些严肃的更新来澄清。
  • 确实 :) 呵呵,Android Webview 不知道。
  • Android WebView 处理 URL 的方式似乎与 Chrome 非常相似。我会满足于知道是否可以将此javascript函数附加到URL?不管是什么浏览器
  • 出于安全原因,我认为不可能将 JS 附加到 URL。有关进一步讨论,请参阅here。一般来说,您附加到 URL 的任何内容都将通过网络设置为 URL 的一部分;只有“#”后面的部分不会,但会在页面中用作锚标识符。
【解决方案4】:

您可以使用 Chrome + http://defunkt.io/dotjs/ 来实现这一点。这正是这个扩展的目的:在特定网站上自动运行一些 JS 脚本。

它现在只是 OSX,但我想还有一些其他扩展也可以这样做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-12
    • 2018-10-05
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    • 1970-01-01
    • 2015-03-23
    • 1970-01-01
    相关资源
    最近更新 更多