Cri*_*low 16 javascript jquery facebook google-chrome-extension google-chrome-devtools
情况:我正在编写适用于任何页面的chrome扩展.
问题问题:我无法将jQuery加载到Facebook中,我想了解发生了什么.
假设:Facebook拥有一些超级先进的技术,以某种方式检测到两者:
数据
我怎么知道jQuery没有加载?
我⌘⌥j在Chrome中调出控制台.当我做 :
> jQuery
>> ReferenceError : jQuery is not defined.
> $('body')
>> Error : Tried to get element "body" but it is not present on the page.
Run Code Online (Sandbox Code Playgroud)
我如何尝试在Facebook中加载jQuery?
方法1(必需但失败):
通过manifest.json文件中的以下代码:
"content_scripts" : [
{
"matches" : ["<all_urls>"],
"js" : [
"javascript/jq/jquery-1.9.1.min.js",
"javascript/jq/non-standard.js"
],
"all_frames": true // (or false, same failure)
}
]
Run Code Online (Sandbox Code Playgroud)
方法2(有效,但不充分):
通过本SO答案(将jQuery加载到控制台)中描述的方法,修改为允许正确的协议:
var jq = document.createElement('script');
jq.src = "//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js";
document.getElementsByTagName('head')[0].appendChild(jq);
jQuery.noConflict();
Run Code Online (Sandbox Code Playgroud)
摘要
假设1似乎不太可能,因为忽略Web浏览器的单独执行上下文将是一个主要的安全漏洞(打破沙箱),并且不太可能被制裁.因此,我可能是偏执狂,俯视明显的,希望你们中的一个人会看到.
附录(其他相关代码)
所有非standard.js:
$.fn.in_groups_of = function( countPerGroup ) {
var groups = [], offset = 0, $group;
while ( ($group = this.slice( offset, (countPerGroup + offset) )).length ) {
groups.push( $group );
offset += countPerGroup;
}
return groups;
};
Run Code Online (Sandbox Code Playgroud)
更多manifest.json:
"manifest_version" : 2,
"permissions" : [
"http://*/",
"https://*/",
"tabs",
"storage",
"unlimitedStorage"
],
Run Code Online (Sandbox Code Playgroud)
Rob*_*b W 45
Chrome控制台似乎无法访问内容脚本的执行上下文.
错了,确实如此.你需要看看正确的地方:

之前的截屏视频显示,Chrome开发者工具的控制台选项卡底部有两个下拉框,可用于更改开发人员工具控制台的执行环境.
左侧可用于更改帧上下文(顶部框架,因此iframe,...),右侧可用于更改脚本上下文(页面,内容脚本,...).
| 归档时间: |
|
| 查看次数: |
9036 次 |
| 最近记录: |