可调试 shell脚本有什么ide,或者ide中的插件是什么_百度知道按键精灵脚本插件怎么用_百度知道>>>>什么叫插件、外挂、脚本 老程序员为你解释
什么叫插件、外挂、脚本 老程序员为你解释
09:30:12 条 来源:贴吧 作者:cpative ]
至今为止,LZ仍是一名?丝程序员,10年不算多,也不算少,也开发过插件,当然不是网游的。
首先请允许我引用 百度百科
插件(Plug-in,又称addin、add-in、addon或add-on,又译外挂)是一种遵循一定规范的应用程序接口编写出来的程序。
再来看看 外挂 百度百科
所谓的外挂就是指一种第三方软件(不是所有第三方软件都是外挂的,比如插件)
后面太长,自己去看
其实上面两个说明了一切,但是这里可能有些人会说有矛盾,那我再解释一下
拿举例,wow自身就拥有一个比较完善的插件模块,开放了很多接口,提供给玩家,玩家可以通过官方公开的接口,函数等直接编写wow客户端可识别加载的源码文件,并由客户端解释运行提供扩展功能,这是自身的特性。
而,并没有这样的一个插件体系,至今版本没有任何接口,想要获取游戏数据,就得开发第三方软件进行读取或修改运行时的客户端内存。
而所谓的DPS插件,其实就是DPS外挂,wow的DPS插件,是真正意义的插件,数据和功能是由客户端自身提供,开发者仅仅是调用了开放的接口,在FF14里就不同了,虽然功能一致,但是手段不同。
再来说 脚本
其实按键精灵这样的本身就是外挂,为什么要叫脚本呢?脚本是针对按键来说的,因为程序流程是脚本的形式,由按键来加载运行,他仅仅对于按键来说是脚本,但按键对于游戏来说他就是外挂。某些人不要混淆视听。
比如wow著名的 魔兽兄弟,这个玩意本身就是个外挂,只是需要玩家编写遵循外挂规范的脚本,加载入外挂才能正常运行。
对于任何网游没有脚本一说,都是外挂。
FF14游戏热门工具资料
FF14近期热门文章
最终幻想14热门资料专题有什么方式或者浏览器插件可以在浏览器载入网页之前插入一段自己的javascript脚本?
我要在很多网页载入之前,加入query代码。因为很多网页并没有jquery。
写一个chrome扩展即可:以下内容来自:Content scripts是在Web页面内运行的javascript脚本。通过使用标准的DOM,它们可以获取浏览器所访问页面的详细信息,并可以修改这些信息。下面是content scipt可以做的一些事情范例:从页面中找到没有写成超链接形式的url,并将它们转成超链接。放大页面字体使文字更清晰找到并处理DOM中的当然,content scripts也有一些限制,它们不能做的事情包括 :不能使用除了之外的chrome.* 的接口不能访问它所在扩展中定义的函数和变量不能访问web页面或其它content script中定义的函数和变量不能做这些限制其实并不像看上去那么糟糕。Content scripts 可以使用机制与它所在的扩展通信,来间接使用chrome.*接口,或访问扩展数据。Content scripts还可以通过共享的DOM来。更多功能参见。Manifest如果content scipt的代码总是需要注入,可以在中的 content_scipt字段注册它。如下面的例子:{
"name": "My extension",
"content_scripts": [
"matches": ["/*"],
"css": ["mystyles.css"],
"js": ["jquery.js", "myscript.js"]
如果只是在某些情况下需要注入,可以使用字段,详见。{
"name": "My extension",
"permissions": [
"tabs", "/*"
使用 content_scripts 字段,一个扩展可以向一个页面注入多个content_script脚本;每个content script脚本可以包括多个javascript脚本和css文件。content_script字段中的每一项都可以包括下列属性:NameTypeDescriptionmatchesarray of strings必须。 定义哪些页面需要注入content script。查看以了解详细语法。cssarray of strings可选。需要向匹配页面中注入的CSS文件。这些文件将在页面的DOM树创建和显示之前,按照定义的顺序依次注入。jsarray of strings可选。 需要向页面中注入的javascript文件,按定义顺序注入。run_atstring可选。 控制content script注入的时机。可以是document_start, document_end或者document_idle。缺省时是document_idle。如果是document_start, 文件将在所有CSS加载完毕,但是没有创建DOM并且没有运行任何脚本的时候注入。如果是document_end,则文件将在创建完DOM之后,但还没有加载类似于图片或frame等的子资源前立刻注入。如果是document_idle,浏览器会在document_end和发出事件之间的某个时机注入。具体的时机取决与文档加载的复杂度,为加快页面加载而优化。注意:在document_idle的情况下,content script不一定会接收到window.onload事件,因为它有可能在事件发出之后才加载。在大多数情况下, 在content script中***onload事件是不必要的,因为浏览器会确保在DOM创建完成后才执行它。 如果一定要在window.onload的时候运行,可以通过属性来检查onload事件是否已经发出。all_framesboolean可选。控制是在匹配页面的所有frame中运行还是只在最上层的frame中运行。缺省是false,也就是只在最上层frame中运行。include_globsarray of string可选。控制将content_script注入到哪些匹配的页面中。模拟Greasemonkey中的@include关键字。 详细信息可以查看下面的。exclude_globsarray of string可选。控制将content_script注入到哪些匹配的页面中。模拟Greasemonkey中的@exclude关键字。 详细信息可以查看下面的。Include和exclude语句一个content script被注入页面的条件是: 页面url匹配任意一条match模式, 并且匹配任意一条include glob模式,并且不匹配任何exclude glob模式。 由于matches属性是必选的,因此include glob和exclude glob都只能用来限制哪些匹配的页面会被影响。另外, 这两个属性与matches属性的语法是不同的, 它们更灵活一些。 在这两个属性中可以包含*号和?号作为通配符。 其中*可以匹配任意长度的字符串,而?匹配任意的单个字符。例如,语句"*"" 可以匹配下面的所有情况:""""但是它不能匹配下面的这些情况:""""""编程式注入如果不需要将javascript 和css注入到每一个匹配的网页里面,可以通过程序来控制代码的注入。 例如, 可以只在用户点击了一个browser action图标后才注入脚本。如果要将代码注入页面,扩展必须具有, 还必须可以使用chrome.tabs模块。 可以通过在manifest文件的字段里声明来取得这些权限。一旦设置好了权限,就可以通过调用来注入javascript脚本。如果要注入css,可以调用。下面的代码(见例子) 演示了点击按钮后向当前标签的页面中注入并执行javascript代码。/* in background.html */
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(null,
{code:"document.body.bgColor='red'"});
/* in manifest.json */
"permissions": [
"tabs", "http://*/*"
当浏览器显示一个http网页并且用户点击了扩展的browser action按钮后,扩展会将页面的bgcolor属性设置为红色。 如果这个页面没有用css设置它的背景颜色的话, 它会变成红色。一般来说,可以将代码放在文件里面而不是像上面那个例子那样直接注入。 可以这样写:chrome.tabs.executeScript(null, {file: "content_script.js"});
执行环境Content script是在一个特殊环境中运行的,这个环境成为isolated world(隔离环境)。它们可以访问所注入页面的DOM,但是不能访问里面的任何javascript变量和函数。 对每个content script来说,就像除了它自己之外再没有其它脚本在运行。 反过来也是成立的: 页面里的javascript也不能访问content script中的任何变量和函数。例如,这个简单的页面:hello.html
==========
&button id="mybutton"&click me&/button&
var greeting = "hello, ";
var button = document.getElementById("mybutton");
button.person_name = "Bob";
button.addEventListener("click", function() {
alert(greeting + button.person_name + ".");
}, false);
现在,将下面这个脚本注入hello.html:contentscript.js
================
var greeting = "hola, ";
var button = document.getElementById("mybutton");
button.person_name = "Roberto";
button.addEventListener("click", function() {
alert(greeting + button.person_name + ".");
}, false);
然后,如果按下按钮, 可以同时看到两个问候。隔离环境使得content script可以修改它的javascript环境而不必担心会与这个页面上的其它content script冲突。 例如,一个content script可以包含JQuery v1而页面可以包含JQuery v2, 它们之间不会产生冲突。另一个重要的优点是隔离环境可以将页面上的脚本与扩展中的脚本完全隔离开。这使得开发者可以在content script中提供更多的功能,而不让web页面利用它们。与嵌入的页面通信尽管content script的执行环境与所在的页面是隔离的,但它们还是共享了页面的DOM。 如果页面需要与content script通信(或者通过content script与扩展通信), 就必须通过这个共享的DOM。下面这个例子是通过自定义的DOM事件和把数据放到固定的地方来实现的:/example.html
===========================
var customEvent = document.createEvent('Event');
customEvent.initEvent('myCustomEvent', true, true);
function fireCustomEvent(data) {
hiddenDiv = document.getElementById('myCustomEventDiv');
hiddenDiv.innerText = data
hiddenDiv.dispatchEvent(customEvent);
contentscript.js
================
var port = chrome.extension.connect();
document.getElementById('myCustomEventDiv').addEventListener('myCustomEvent', function() {
var eventData = document.getElementById('myCustomEventDiv').innerT
port.postMessage({message: "myCustomEvent", values: eventData});
在上面的例子中,html页面(不属于扩展)创建了一个自定义事件, 当它向DOM中的一个特定元素写入事件数据后就会激活并派发这个自定义事件。 Content script在这个特定元素上***这个自定义事件, 从这个元素中获取数据,并向扩展进程post一个消息。 通过这种方式, 页面建立了与扩展的通信链接。 这个方法也适用于反向的通信。安全性在写content script的时候,有两个安全问题必须注意。 首先, 要小心不要给原页面带来新的安全漏洞。 例如, 如果content script要从其它网站获取数据(比如), 在将数据注入前,应该进行处理以防止攻击,比如用innerText注入而不是用innerHTML注入。特别要小心的是在一个HTTPS的页面上获取HTTP的内容,因为这个内容很可能是被人用方式破坏过的。其次,尽管在独立环境中运行content script的机制已经提供了一些保护,如果不加区分的使用web页面上的内容还是可以被恶意的web页面攻击的。contentscript.js
================
var data = document.getElementById("json-data")
// WARNING! Might be evaluating an evil script!
var parsed = eval("(" + data + ")")
contentscript.js
================
var elmt_id = ...
// WARNING! elmt_id might be "); ... evil script ... //"!
window.setTimeout("animate(" + elmt_id + ")", 200);
建议使用安全一些的API:contentscript.js
================
var data = document.getElementById("json-data")
// JSON.parse does not evaluate the attacker's scripts.
var parsed = JSON.parse(data)
contentscript.js
================
var elmt_id = ...
// The closure form of setTimeout does not evaluate scripts.
window.setTimeout(function() {
animate(elmt_id);
引用扩展里的文件通过chrome.extension.getURL()来获取扩展里文件的URL。可以像使用其它url一样使用这些URL,如下面的例子所示://Code for displaying /images/myimage.png:
var imgURL = chrome.extension.getURL("images/myimage.png");
document.getElementById("someImage").src = imgURL;
例子例子显示了一个扩展如何从content script里进行cross-site请求。可以在 里的消息通信部分找到更多例子。可以看 和 这两个例子了解程序注入。更多例子和源代码,可以查看.
方法①:Tampermonkey,可以设定脚本加载于----文档加载前、加载时和加载后。方法②:写个基于 userscript 的扩展也就是一个 manifest.json 文件[1]和一次 crx 打包[2]的事儿。注:[1] 可参考 @柳易寒 提供的信息[2] Chrome 提供打包功能,da「设置 - 扩展 - 开发者模式」后可见
补充一个比较通用的:自己建个代理,通过代理在返回时候修改html,注入javascript。这样所有的浏览器只要设置代理为你的程序就可以自动获得注入jquery这个效果了。而且可以精确控制哪些页面注入,哪些页面不注入,注入什么东西。当然从头写个代理复杂一点,你可以用fiddler,本身已经实现了这样的功能。
已有帐号?
无法登录?
社交帐号登录脚本是什么意思?_百度知道