解决方案 »
- 怎么解析table中的input元素?
- servlet的获取值的问题
- QQ空间常用功能实现__日志搜索__标签提取__魔方日志__草稿箱
- 求助:javascript 在IE 和firefox 下的区别
- javascript中的数值计算
- ie正常ff报错
- 关于childNode和parentElement触发相同事件问题
- 高手指教:javaScript 如何定位到指定的作用区域
- 框架集问题
- 百度UMeditor的问题
- 用jquery在ready(function(){});中写了对table的操作,但更新table内容后,操作失效!
- 接收json的数据,怎么用document.write()输出
chrome扩展程序是可以过虑网站的.
只是不知道有没有权限调用, 听说是隔离开的, 但是刚接触, 不是很清楚. 所以来请教大家.
表示,你的插件(1L硬是指正这是扩展程序也是有道理的!表示我和楼主一样,从来不分这个....)的脚本,和原页面的脚本是不可能交互的!他们从属于不同的环境,也就是不同的上下文,不共享任何js变量或者函数,所以你的插件脚本 不能调用原页面的脚本的变脸和函数------插件脚本属于一个叫isolated world的环境,和其它环境都是独立的。
之所以插件脚本可以定制网页外观,是因为它和原页面脚本共享DOM结构。他们只是都能够对DOM树进行操作罢了!比如原页面脚本可能定义背景色为红色,你再在自己的脚本里面设置成蓝色,最终显示成蓝色,只是对body对象进行了操作而已,但你并不可能说是调用原有的函数进行更改操作的!
打个比方,A可以用锄头在一块田地上种萝卜,B可以用铲子在这块田地上中白菜,最终这块地上种出来的是什么,由这二者的操作共同影响,但是,A是没有铲子的,B是不会用上锄头的,差不多是这个比喻吧~~~
ps:我也在学习编写chrome插件,希望可以多多交流呢~
虽然js确实不能直接调用页面中的变量和函数, 但是chrome.* API是提供了接口实现的. 比如chrome.tabs.executeScript接口
https://developer.chrome.com/extensions/tabs
刚才我试验了好久的executeScript接口,我目前测到的结果是:
通过executeScript注入的脚本和content_script脚本属于同一个上下文(共享js变量和函数),但是还是和原脚本的上下文不同!也就是说,这种方法应该还是不可能实现你要的效果。所不同的是,executeScript是动态加载的,而且需要在后台动态加载,而content_script是访问这个页面的时候就已经加载好的。
不过你说的,通过content_script调用动态的加载js文件,来实现调用原网页脚本的想法,我觉得很不错!可以试试,不过我目前还没试过啦~要吃饭了,回头去亲测一下
你调用executeScript能成功吗, 怎么用的, chrome版本是多少, 望指教, 我就卡在这里, 动不了.
嘿嘿,用点小技巧吧!executeScript的函数,第一个参数传的是tab.id,如果是null的话,应该是当前页面的样子。第二个参数是要注入的js文件(用{file:“sample.js”}对象表示)。
先得在manifest里面获取注入这个页面的权限,(简单起见,我直接在permission里面添加http://*/),然后在扩展程序管理界面 检查视图: _generated_background_page.html打开后台的console,通过执行两行代码:chrome.tabs.query({active:true},function(tabs){alert(tabs[0].id);});
chrome.tabs.executeScript(11,{file:"sample.js"});第一行会返回你当前显示页面的tab.id,我看到的是11,所以第二行的时候,把第一个参数改成11,在sample里面设个alert,然后就发现可以成功地alert了,说明sample.js被成功地导入了!
另外由于http://*/并没有获取到chrome://devtool的权限,所以你在做这个测试的时候,务必记得把当前标签页换成别的,比如百度!我之前就是因为直接在扩展程序管理界面做测试,然后报错说无法获取权限。
关键是我调用executeScript的时候, chrome在consloe中直接输出错误提示说 executeScript 未定义, 这是什么原因呢?
那个executeScript必需在背景页面中才能调用吗, 在注入的js中不能调用吗?
那个executeScript必需在背景页面中才能调用吗, 在注入的js中不能调用吗?
不能,这就是为什么要有background.js,可以在manifest里面设置的。
"background": { "scripts": ["jquery.min.js", "background.js"] },
jquery.min.js 这个东西是什么呢, 我看好多都有这个脚本, 并且这个脚本的代码相当多.没弄过JS, 这个应该是小白问题吧.
jquery.min.js 这个东西是什么呢, 我看好多都有这个脚本, 并且这个脚本的代码相当多.没弄过JS, 这个应该是小白问题吧.
就是导入JQuery库,JQuery的具体描述可以去google一下。我个人感觉是用JQuery可以简化很多js代码,写起来很方便...里面也定义了很多函数,读取、设置DOM元素的值balabala的操作都特别方便.....我也同样小白,正在学习的路上而已....
可以加个QQ, 方便联系交流. 希望向你学习下这方面的东西.
我的QQ是: 744780040