为什么 jQuery 无法在 Facebook 中加载?

2024-03-21

情况:我正在编写一个适用于任何页面的 Chrome 扩展。

问题问题:我无法将 jQuery 加载到 Facebook,我想了解发生了什么。

假设:Facebook 拥有一些超先进的技术,可以以某种方式检测到:

  1. 当 jQuery 通过 chrome 扩展加载时 表面上separateJSVM 执行上下文,Facebook 巨头 表面上不知何故知道这一点separateJSVM执行 上下文,并阻止它。
  2. jQuery 通过 script.src 加载并阻止它 (当我使用通过 HTTPS 提供服务的 Google CDN 而不是 jQuery 方法 2 不起作用,但还不足以 回答).

DATA

我怎么知道 jQuery 没有加载?

I j to bring up the console in Chrome. When I do :

    > jQuery
    >> ReferenceError : jQuery is not defined.
    > $('body')
    >> Error : Tried to get element "body" but it is not present on the page.

我如何尝试在 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)
                                  } 
                              ]

方法2(有效,但不够):

通过此 SO 答案中描述的方法(将 jQuery 加载到控制台 https://stackoverflow.com/a/7474386/907415),修改为允许正确的协议:

    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();

Summary

假设 1 似乎不太可能,因为覆盖 Web 浏览器的单独执行上下文将是一个主要的安全漏洞(破坏沙箱),并且不太可能受到制裁。因此,我可能有点偏执,忽视了显而易见的事情,希望你们中的一个人能看到这一点。

附录(其他相关代码)

All of 非标准.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;
    };

More of 清单.json :

"manifest_version"        :   2,
"permissions"             :   [
                                  "http://*/",
                                  "https://*/",
                                  "tabs",
                                  "storage",
                                  "unlimitedStorage"
                              ],

Chrome 控制台似乎无法访问内容脚本的执行上下文。

错了,确实如此。你需要看看正确的地方:

前面的截屏显示,Chrome开发者工具的控制台选项卡底部有两个下拉框,可用于更改开发者工具控制台的执行环境。
左侧可用于更改框架上下文(顶部框架,因此 iframe,...),右侧可用于更改脚本上下文(页面,内容脚本,...)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 jQuery 无法在 Facebook 中加载? 的相关文章

随机推荐

  • 我可以在 R 中加载第三方 .dll 吗?

    我运行的是 Windows 7 并且我知道 DLL 是使用 Visual Studio C 2010 构建的 由于我没有源代码 因此在创建包 NAMESPACE 时无法在 R 中即时构建它 在这个阶段 我不需要创建包 我只想使用 R 加载库
  • c中switch语句中的多个变量

    如何使用c中的switch语句在c中编写以下语句 int i 10 int j 20 if i 10 j 20 Mymethod else if i 100 j 200 Yourmethod else if i 1000 j 2000 OR
  • 如何更改卢比符号

    Hiii 我正在使用 magento 1 4 我想在前端和后端将印度货币符号 Rs 更改为新的卢比符号 任何人都可以告诉我这个吗 如果我没记错的话 可以找到符号定义 lib Zend Locale Data characters xml l
  • 如果不为零且不为空则合并数组

    Ruby 中有一些数组 这种情况下有 4 个数组吗 array1 key label1 1 value label1 2 key label1 2 value label1 2 array2 key label2 1 value label
  • 使用 Flask 重定向获取下一个 URL

    我正在关注这个信息在这里 https stackoverflow com questions 28784002 flask basic http auth use login page 一切看起来都不错 但我需要知道如何从倒数第二行的新登录
  • 意图启动新活动非常慢:(

    我有一段 Intent 代码 Intent i new Intent i setAction Intent ACTION MAIN i addCategory Intent CATEGORY LAUNCHER i setFlags Inte
  • 如何在 Javascript 中将缓冲区对象转换为图像?

    我只是尝试将图像作为缓冲区添加到 mongodb 并尝试转换回图像 在ejs中 效果很好 src data image png base64 这是我在ejs中使用的代码 但是当我尝试通过纯js 将其附加到元素时 它显示错误 two prep
  • Activeadmin 可按多列排序

    有没有可能排序activeadmin表使用多列 我找到了一个issue https github com gregbell active admin issues 909也就是说现在这是不可能的 但我想知道有没有人实现过这样的功能 我也遇到
  • 在网站完全打开之前尝试输入登录凭据时出现“无警报打开”

    I am trying to access a website However to access the website first I need to enter username and password After that ful
  • 删除所有换行符并将其添加到特定文本之后

    我有一个文本文件 其中必须删除所有换行符 然后在每个文本后添加新的换行符 我怎样才能使用替换工具做到这一点 您至少需要分两步完成 首先 单击工具栏中的 符号 您可以查看是否有CRLF行结尾或只是LF 单击 替换 按钮 然后将 r n or
  • touchmove 事件不会在 Android 版谷歌浏览器上触发

    这是针对 客户签名 组件的反应 touchmove 事件不会在 Android 版 Google Chrome 浏览器上触发 我使用的是三星 Galax 平板电脑 a 2016 我通过 USB 控制台将平板电脑连接到我的电脑 在我的 com
  • bash: /usr/local/android-sdk-linux/tools/android: 权限被拒绝

    我正在尝试在 Ubuntu 上安装手机间隙 我遵循了所有必要的步骤并在 Ubuntu 上成功安装了 android sdk 但是当我在终端中输入 android 时 它显示权限被拒绝 我如何更改权限 错误是 bash usr local a
  • PHP 中 echo、echo()、print 和 print() 之间的区别[重复]

    这个问题在这里已经有答案了 可能的重复 PHP 中的 echo 和 print 有何不同 https stackoverflow com questions 234241 how are echo and print different i
  • Python根据值绘制不同颜色的散点图

    我有一个数据框 我想绘制散点图 数据框看起来像 year length Animation 0 1971 121 1 1 1939 71 1 2 1941 7 0 3 1996 70 1 4 1975 71 0 我希望散点图中的点具有不同的
  • 启用了 selinux 的 Docker - 不允许在 /usr 中重新标记内容

    我在 Centos7 上安装了 Docker 并将 selinux 设置为在主机上强制执行 并且 Docker 守护进程以 selinux enabled 标志启动 当我尝试运行以下命令时 docker run it v usr local
  • 当用户注销 React Native 应用程序时,如何删除 Firebase Cloud Messaging Token?

    我使用 React Native FCM 进行消息传递 当用户注销应用程序时 我想删除 FCM 令牌 以便用户不会再次收到通知 下面是我的注销代码 signOutAsync async gt this logoutEvent API pos
  • Kivy Popup渲染问题

    我正在开发一个公交车司机应用程序 偶尔 应用程序 通过服务器 订阅的 MQTT 主题上会发布消息 当出现此类消息时 必须出现弹出窗口 我定制了默认的 Kivy 弹出窗口 更改了背景 添加了带有标签和按钮的 FloatLayout 作为内容
  • 如何使用 LINQ to SQL 创建排名搜索结果?

    我正在寻找一种使用 l2s 根据关键字返回排名结果的方法 我想使用一个关键字并能够使用该关键字在表中搜索该关键字 contains 我无法弄清楚的技巧是如何计算该 keyqord 出现的次数 然后 OrderByDescending 根据该
  • 计算 2D 向量叉积

    来自维基百科 叉积是a中两个向量的二元运算三维欧几里得空间产生另一个向量 该向量垂直于包含两个输入向量的平面 鉴于该定义仅定义为三个 或七 一和零 https en wikipedia org wiki Seven dimensional
  • 为什么 jQuery 无法在 Facebook 中加载?

    情况 我正在编写一个适用于任何页面的 Chrome 扩展 问题问题 我无法将 jQuery 加载到 Facebook 我想了解发生了什么 假设 Facebook 拥有一些超先进的技术 可以以某种方式检测到 当 jQuery 通过 chrom