运行javascript以外的其他方式:从url
Other way than running javascript: from url?
有没有其他方法可以在不更改其URL的情况下将我自己的javascript注入另一个页面?例如,看看这个网站:http://somadesign.ca/projects/fontfriend/
它正在通过输入 url 地址长脚本来工作,像这样:JavaScript:{脚本代码}稍后将脚本注入任何网站。
有没有其他更自动、更简单的方法可以做到这一点?
你可以通过用户脚本(改变网站行为的小段JavaScript代码(来做到这一点。
用户脚本通常具有类似于以下内容的格式:
// ==UserScript==
// @name Example Script
// @description Whatever it does
// @match http://www.example.com/*
// @require http://code.jquery.com/jquery-latest.js
// ==/UserScript==
alert("hello");
这里重要的是以 @match 开头的行,它指定脚本应运行的时间。上面的例子会在您访问网址以 http://www.example.com/
开头的页面时提醒"hello"。该@require允许您导入其他脚本,例如jQuery。
为了使生活更轻松,大多数人使用用户脚本管理器,例如Tampermonkey或Greasemonkey。这些允许您在浏览器中编辑、调试和一般脚本。他们还为您照顾波利尔板。
如果您有兴趣,我写了一个关于如何设置和开始使用Tampermonkey的简短教程。
您在问题中发布的链接实际上是书签的用例,正如我在之前的评论中简要解释的那样。
根据您的描述,我猜您误解了它的使用方式。如果我错了,请纠正我,你可以跳到最后一部分。
书签是一个锚点(<a>
标签(,其href
以伪协议javascript:
开头。典型的书签可能如下所示:
<a href="javascript:alert(document.title)">Say my name!</a>
(请打开片段演示(当您单击链接时,它会提醒当前页面标题。但是,它不会像这样使用!您需要做的是,将其拖到浏览器的书签栏中,另存为书签!然后,在您正在访问的任何网页上,单击书签。该脚本将在该页面的上下文中执行,并告诉您其页面标题。这是使用书签的正确方法。
书签的长度有限,因为URL有限制(2,000+左右(。所以你不能在书签中写太多内容。好消息,您可以使用该书签插入<script>
标签。例如,如果您单击jQuery,则此书签会将jQuery注入到您的访问页面:
<a href="javascript:(function(){var s = document.createElement('script');s.src = 'http://code.jquery.com/jquery-2.1.1.min.js';document.body.appendChild(s);})()">Inject jQuery</a>
因此,如果您的应用程序超出限制,您可以将其保存到 JS 文件中,并通过书签注入。
正如您告诉您的要求:针对老年人的服务,我认为这是一个实用的解决方案。他们只是保存一个书签,并在需要时单击。就是这样!
此外,这种技术具有非常好的跨浏览器兼容性(甚至到上个世纪(。还有一件事,IE6 的 URL 长度有限为 500+(不过对于脚本注入来说仍然足够了(。
最后但并非最不重要的一点是,正如我之前所提到的,由于潜在的 XSS,这也可能是危险的!所以请密切关注您的服务,不要让您的 JS 文件被黑客入侵!
编辑:我上次错过了一件事。不要在书签函数中返回除undefined
以外的任何内容。
看看这个例子。在警报对话框之后,页面内容将被替换为返回值 'Oops'
,工作原理如下document.write('Oops')
:
<a href="javascript:(function(){alert('Oops');return 'Oops';})()">Oops</a>
所以一个更有保证的方法是使用 void
关键字,它强制函数调用返回 undefined
:
<a href="javascript:void function(){alert('Oops');return 'Oops';}()">Oops</a>
编辑:或者,更用户友好的方法是开发浏览器扩展:Chrome的CRX,Firefox的XPI等。如果扩展设计良好,则只需要用户安装。另一方面,它显然更昂贵。
- 使用Javascript/jQuery以编程方式将当前锚点/哈希/片段附加到任何表单操作url
- 修改 HTML 的方式使左键应带到下一个 URL
- 限制与AngularJS状态匹配的动态URL参数的最佳方式
- 使用javascript在chrome浏览器的新选项卡中以程序方式打开URL
- 用字符串和数字写视频源URL的正确方式是什么
- 使用ui路由器实现动态URL路由的最佳方式是什么
- 更改url位置的最佳方式
- 如何以编程方式在URL上执行javascript
- 更改基于目标将 URL 参数追加到链接的方式
- 以编程方式将 URL 加载到 ng 视图中
- 通过 JavaScript URL 可变快捷方式扩展 HTML URL
- jQuery:以最佳方式根据URL添加类
- 运行javascript以外的其他方式:从url
- AngularJS-处理手动输入URL状态的最佳方式
- 如何使用express JS以特定方式从URL中读取参数
- Javascript-切换元素只能用一种方式!还有URL附加所需的帮助
- 匹配URL中路径的正确方式?(8)
- 在url中传递数组的有效方式
- jQuery:向URL散列写入和读取参数的轻量级方式
- 使用JQuery以不可见的方式调用URL并返回成功/错误标志