jQuerys的draggable不工作包含在facebook页面上(基本理解)

jQuerys draggable does not work included on facebook page (basic understanding)

本文关键字:draggable 工作 包含 facebook jQuerys      更新时间:2023-09-26

当我试图分析facebook页面的DOM结构时,我试图使用Greasemonkey实现一些Javascript代码。我包括(通过复制/粘贴)jQuery核心UI。我通过Greasemonkey将代码添加到三个网站,一个相当空的网站位于我电脑上的一个文件上,然后是"instagaram"页面(仅用于测试)和facebook。我用一个厚厚的红色broder标记了插入的div,我可以在所有三页上看到它。

$('<div id="draggable2" class="ui-widget-content" style="position:absolute;border:50px solid red;top:0;left:10px;z-index:300;">text1</div>').appendTo('body');
$( "#draggable2" ).click(function() {alert("pallo");});
$(function() {
    $( "#draggable2" ).draggable();
});
alert("see if jquery is still there: " + $);

在我电脑上的测试页面和instagram页面上,div都是可拖动的。在脸书上,我收到了jQuerys引发的"警报"。点击Funktion(在这种情况下是"pallo")。但是FF错误控制台在Facebook页面上说:

TypeError: $(...).draggable is not a function

Facebook怎么可能关闭可拖动功能?考虑到这篇文章,我尝试了:

    jQuery.noConflict();
jQuery(function() {
    jQuery( "#draggable2" ).draggable();
});

FF仍然表示(在facebook页面上)jQuery.draggable()不是一个函数。

你知道Facebook是如何"杀死"jQuery可拖动功能的吗?还是我在思考或测试什么问题?这是一个更多关于"理解"窗帘背后的技术的问题。

关于故障排除和如何进行故障排除,请点击此处:

看看facebook的DOM,在我的未被黑客入侵的环境中已经有一个变量被声明为$,很可能这就是$在你的环境中仍然代表的。监控变量并弄清楚$是否被覆盖、更改、修改等可能会是一条曲折和遗憾的道路。

目前,只知道$已经存在于Facebook中,然后制定一个游戏计划,用这些知识做你想做的事情,可能就足够了。您可以在FireFox中点击Ctrl+shift+k打开浏览器控制台,只需输入$即可将其重新登录到控制台中$是什么。

解决问题:

这里的问题很可能与Greasemonkey内部的范围有关。您的目标可能是在GM脚本的范围内引入jQuery,而不是在窗口的范围内,所以希望这就是您添加jQuery文件的方式:

// @require     https://etc.etc.etc/jquery.min.js
// @require     https://etc.etc.etc/jquery-ui.min.js
...
this.$ = this.jQuery = jQuery.noConflict(true);
//remainder of code to insert things

这样做可以确保在Greasemonkey脚本的范围内,$指的是jQuery和jQuery ui,而Facebook可以继续使用它的$。:)