如何调出chrome的consloe gin

我是想编写一个chrome插件,&自动调用某个页面中的js函数.&(注: 页面是随便一个网站的页面,&比如百度).
或者说点击一个&input类型按钮,&&可以实现吗?
回复讨论(解决方案)
写错了,&&&不应该中Chrome插件,&应该是Chrome扩展程序.
函数名都不知道,你怎么个调用,要是一个连js脚本都没有的页面呢。。
函数名都不知道,你怎么个调用,要是一个连js脚本都没有的页面呢。。
这个函数名当然是知道的,&&因为目标就是固定的网页.&里面有什么函数,&肯定会提前分析出来.
chrome扩展程序是可以过虑网站的.
只是不知道有没有权限调用,&听说是隔离开的,&但是刚接触,&不是很清楚.&所以来请教大家.&&
我最近正在学习这个,我正好看过关于这部分的开发手册。
表示,你的插件(1L硬是指正这是扩展程序也是有道理的!表示我和楼主一样,从来不分这个....)的脚本,和原页面的脚本是不可能交互的!他们从属于不同的环境,也就是不同的上下文,不共享任何js变量或者函数,所以你的插件脚本&
不能调用原页面的脚本的变脸和函数------插件脚本属于一个叫isolated&world的环境,和其它环境都是独立的。
之所以插件脚本可以定制网页外观,是因为它和原页面脚本共享DOM结构。他们只是都能够对DOM树进行操作罢了!比如原页面脚本可能定义背景色为红色,你再在自己的脚本里面设置成蓝色,最终显示成蓝色,只是对body对象进行了操作而已,但你并不可能说是调用原有的函数进行更改操作的!
打个比方,A可以用锄头在一块田地上种萝卜,B可以用铲子在这块田地上中白菜,最终这块地上种出来的是什么,由这二者的操作共同影响,但是,A是没有铲子的,B是不会用上锄头的,差不多是这个比喻吧~~~
ps:我也在学习编写chrome插件,希望可以多多交流呢~
我最近正在学习这个,我正好看过关于这部分的开发手册。
表示,你的插件(1L硬是指正这是扩展程序也是有道理的!表示我和楼主一样,从来不分这个....)的脚本,和原页面的脚本是不可能交互的!他们从属于不同的环境,也就是不同的上下文,不共享任何js变量或者函数,所以你的插件脚本&
不能调用原页面的脚本的变脸和函数------插件脚本属于一个叫isolated&world的环境,和其它环境都是独立的。
之所以插件脚本可以定制网页外观,是因为它和原页面脚本共享DOM结构。他们只是都能够对DOM树进行操作罢了!比如原页面脚本可能定义背景色为红色,你再在自己的脚本里面设置成蓝色,最终显示成蓝色,只是对body对象进行了操作而已,但你并不可能说是调用原有的函数进行更改操作的!
打个比方,A可以用锄头在一块田地上种萝卜,B可以用铲子在这块田地上中白菜,最终这块地上种出来的是什么,由这二者的操作共同影响,但是,A是没有铲子的,B是不会用上锄头的,差不多是这个比喻吧~~~
ps:我也在学习编写chrome插件,希望可以多多交流呢~
虽然js确实不能直接调用页面中的变量和函数,&但是chrome.*&&API是提供了接口实现的.&&&比如chrome.tabs.executeScript接口
/extensions/tabs
只是现在也有问题,&虽然chrome有这个接口,&但是写到插件里面,&运行时,&又提示说&&executeScript&是未定义的
/fl2011/item/da85bc11ce9f329b
可以通过content_script,&插入js代码到目标网页,&这样就可以使用executeScript调用本地函数了.
/fl2011/item/da85bc11ce9f329b
可以通过content_script,&插入js代码到目标网页,&这样就可以使用executeScript调用本地函数了.
对哦,这个思路不错....被科普了~~
只是现在也有问题,&虽然chrome有这个接口,&但是写到插件里面,&运行时,&又提示说&&executeScript&是未定义的
看手册的话,我觉得chrome.tabs.executeScript语句是不是应该写在后台脚本里面才行,你会不会写到content_script的脚本里面了,才不能通过?
只是现在也有问题,&虽然chrome有这个接口,&但是写到插件里面,&运行时,&又提示说&&executeScript&是未定义的
看手册的话,我觉得chrome.tabs.executeScript语句是不是应该写在后台脚本里面才行,你会不会写到content_script的脚本里面了,才不能通过?
刚才我试验了好久的executeScript接口,我目前测到的结果是:
通过executeScript注入的脚本和content_script脚本属于同一个上下文(共享js变量和函数),但是还是和原脚本的上下文不同!也就是说,这种方法应该还是不可能实现你要的效果。所不同的是,executeScript是动态加载的,而且需要在后台动态加载,而content_script是访问这个页面的时候就已经加载好的。
不过你说的,通过content_script调用动态的加载js文件,来实现调用原网页脚本的想法,我觉得很不错!可以试试,不过我目前还没试过啦~要吃饭了,回头去亲测一下
刚才我试验了好久的executeScript接口,我目前测到的结果是:
通过executeScript注入的脚本和content_script脚本属于同一个上下文(共享js变量和函数),但是还是和原脚本的上下文不同!也就是说,这种方法应该还是不可能实现你要的效果。所不同的是,executeScript是动态加载的,而且需要在后台动态加载,而content_script是访问这个页面的时候就已经加载好的。
不过你说的,通过content_script调用动态的加载js文件,来实现调用原网页脚本的想法,我觉得很不错!可以试试,不过我目前还没试过啦~要吃饭了,回头去亲测一下
你调用executeScript能成功吗,&怎么用的,&&chrome版本是多少,&望指教,&我就卡在这里,&动不了.
刚才我试验了好久的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的函数,第一个参数传的是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&&未定义,&这是什么原因呢?
你用的是F12弹出来的console么?你应该用后台界面的console来调。&chrome右上角“三条杠按钮”==&工具===》扩展程序,然后点你的插件的_generated_background_page.html,就可以调用了。
你用的是F12弹出来的console么?你应该用后台界面的console来调。&chrome右上角“三条杠按钮”==&工具===》扩展程序,然后点你的插件的_generated_background_page.html,就可以调用了。
那个executeScript必需在背景页面中才能调用吗,&在注入的js中不能调用吗?
你用的是F12弹出来的console么?你应该用后台界面的console来调。&chrome右上角“三条杠按钮”==&工具===》扩展程序,然后点你的插件的_generated_background_page.html,就可以调用了。
那个executeScript必需在背景页面中才能调用吗,&在注入的js中不能调用吗?
不能,这就是为什么要有background.js,可以在manifest里面设置的。
&background&:&{&&scripts&:&[&jquery.min.js&,&&background.js&]&},
不能,这就是为什么要有background.js,可以在manifest里面设置的。
&background&:&{&&scripts&:&[&jquery.min.js&,&&background.js&]&},
jquery.min.js&&这个东西是什么呢,&我看好多都有这个脚本,&&并且这个脚本的代码相当多.
没弄过JS,&这个应该是小白问题吧.
不能,这就是为什么要有background.js,可以在manifest里面设置的。
&background&:&{&&scripts&:&[&jquery.min.js&,&&background.js&]&},
jquery.min.js&&这个东西是什么呢,&我看好多都有这个脚本,&&并且这个脚本的代码相当多.
没弄过JS,&这个应该是小白问题吧.
就是导入JQuery库,JQuery的具体描述可以去google一下。我个人感觉是用JQuery可以简化很多js代码,写起来很方便...里面也定义了很多函数,读取、设置DOM元素的值balabala的操作都特别方便.....我也同样小白,正在学习的路上而已....
留个联系方式,我也是在学习写插件,可以多多交流嘛~
就是导入JQuery库,JQuery的具体描述可以去google一下。我个人感觉是用JQuery可以简化很多js代码,写起来很方便...里面也定义了很多函数,读取、设置DOM元素的值balabala的操作都特别方便.....我也同样小白,正在学习的路上而已....
可以加个QQ,&方便联系交流.&希望向你学习下这方面的东西.
我的QQ是:&
通过DOM在文档的&head&标签里面插入script标签,然后再嵌入代码的想法是可行的!毕竟我自己测试的话,成功地调用了原页面的函数~~表示又学到一招
通过DOM在文档的&head&标签里面插入script标签,然后再嵌入代码的想法是可行的!毕竟我自己测试的话,成功地调用了原页面的函数~~表示又学到一招
收到!谢谢分享!Javascript的console.log()用法
分类,标签:
把下面代码保存为html文件,然后IE8---F12---脚本---控制台里就会出现有趣的东西,如果是Firefox,安装了FireBug后,则F12--控件台--所有 ,同样可以看到。
&!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&
&html xmlns="http://www.w3.org/1999/xhtml"&
&meta http-equiv="Content-Type" content="text/ charset=gb2312" /&
&title&javascript的console.log()用法&/title&
&script type="text/javascript"&
console.log 原先是 Firefox 的“专利”,严格说是安装了 Firebugs 之后的 Firefox 所独有的调试“绝招”。
这一招,IE8 学会了,不过用起来比 Firebugs 麻烦,只有在开启调试窗口(F12)的时候,console.log 才能出结果,不然就报错。
今天看到 Opera 也有个叫 dragonfly 的东东,用这东西查看 DOM,已经可以和 Firebug 媲美,然而还是不能用 console.log。于是有人就提供了这样两句代码:
window.console = window.console || {};
console.log || (console.log = opera.postError);
经测试,以上代码好使。
至此,Firefox/IE/Opera 都能用上 console.log 了。
当然,IE 和 Opera 下的 console.log 比起 Firebugs 原创的 console.log,还是太过简单,比如参数是 Object 或者数组就没有进一步的显示功能。
var i = 'I am a string';
console.log('变量:',i);
var arr = [1,2,3,4,5];
console.log('数组:',arr);
var obj1 = {
&&& key1 : 'value1',
&&& key2 : 'value2',
&&& key3 : 'value3'
var obj2 = {
&&& key6 : 'value4',
&&& key5 : 'value5',
&&& key4 : 'value6'
var obj3 = {
&&& key9 : 'value7',
&&& key8 : 'value8',
&&& key7 : 'value9'
console.log('对象:',obj1);
//对象数组
var objArr1 = [obj1,obj2,obj3];
var objArr2 = [[obj1],[obj2],[obj3]];
console.log('对象数组1:',objArr1);
console.log('对象数组1:',objArr2);
变量:I am a string
数组:[1, 2, 3, 4, 5]
对象:Object { key1="value1", key2="value2", key3="value3"}
对象数组1:[Object { key1="value1", key2="value2", key3="value3"}, Object { key6="value4", key5="value5", key4="value6"}, Object { key9="value7", key8="value8", key7="value9"}]
对象数组1:[[Object { key1="value1", key2="value2", key3="value3"}], [Object { key6="value4", key5="value5", key4="value6"}], [Object { key9="value7", key8="value8", key7="value9"}]]
Firebug & Chrome Console 控制台的一些其他功能
console.log(object[, object, ...])
使用频率最高的一条语句:向控制台输出一条消息。支持 C 语言 printf 式的格式化输出。当然,也可以不使用格式化输出来达到同样的目的:
var animal='frog', count=10;
console.log("The %s jumped over %d tall buildings", animal, count);
console.log("The", animal, "jumped over", count, "tall buildings");
console.debug(object[, object, ...])
向控制台输出一条信息,它包括一个指向该行代码位置的超链接。
(object[, object, ...])
向控制台输出一条信息,该信息包含一个表示“信息”的图标,和指向该行代码位置的超链接。
console.warn(object[, object, ...])
同 info。区别是图标与样式不同。
console.error(object[, object, ...])
同 info。区别是图标与样式不同。error 实际上和 throw new Error() 产生的效果相同,使用该语句时会向浏览器抛出一个 js 异常。
console.assert(expression[, object, ...])
断言,测试一条表达式是否为真,不为真时将抛出异常(断言失败)。
console.dir(object)
输出一个对象的全部属性(输出结果类似于 DOM 面板中的样式)。
console.dirxml(node)
输出一个 HTML 或者 XML 元素的结构树,点击结构树上面的节点进入到 HTML 面板。
console.trace()
输出 Javascript 执行时的堆栈追踪。
console.group(object[, object, ...])
输出消息的同时打开一个嵌套块,用以缩进输出的内容。调用 console.groupEnd() 用以结束这个块的输出。
console.groupCollapsed()
同 console.group(); 区别在于嵌套块默认是收起的。
console.time(name)
计时器,当调用 console.timeEnd(name);并传递相同的 name 为参数时,计时停止,并输出执行两条语句之间代码所消耗的时间(毫秒)。
console.profile([title])
与 profileEnd() 结合使用,用来做性能测试,与 console 面板上 profile 按钮的功能完全相同。
console.count([title])
输出该行代码被执行的次数,参数 title 将在输出时作为输出结果的前缀使用。
console.clear()
清空控制台
控制台的输出面板右边,是控制台的输入面板(Chrome 调试工具对应为下方),在这里除了可以运行常规的 javascript 代码,还内置了相当数量的命令行可以辅助我们的调试工作,下面是一些常用命令行的简单介绍。
返回一个给定 id 的元素。
$$(selector)
返回给定的 css 选择器匹配到的一组元素。
返回给定的 XPath 表达式匹配到的一组元素。
在 HTML 面板中选中的元素。
上一次在 HTML 面板中选中的元素。
访问最近 5 个被选中过的元素,index 的范围: 0 – 4。
dir(object)
同 console.dir(object)。
dirxml(node)
同 console.dirxml(node)。
同 console.clear()。
inspect(object[, tabName])()
在合适的(或一个指定的) tab 中检视一个对象。
keys(object)
返回一个对象的所有属性的键。
values(object)
返回一个对象的所有属性的值。
在函数第一行添加一个断点,使用 undebug(fn) 移除断点。
monitor(fn)
开启一个函数的调用日志,使用 unmonitor(fn) 关闭该功能。非常有用的一个命令,但是它似乎并没有很好地工作。
monitorEvents(object[, types])
开启一个元素的某个事件(或所有事件)被触发时的日志记录。用例如下:
monitorEvents($0,['click'])
上面的命令行被执行后,将开启当前在 HTML 面板中被选中元素的 click 事件监控,一旦这个元素的 click 事件被触发,事件对象将会在控制台输出。如果不指定第二个参数,将对所有事件进行记录。
profile([title])
同 console.profile([title])
& 上一篇:
:下一篇 &
发表我的评论

我要回帖

更多关于 chrome调出控制台 的文章

 

随机推荐