什么是jQuery18007779947370290756

我在我的页面中使用jQuery,当我使用Chrome开发工具时,我在控制台中发现了jQuery18007779947370290756和jQuery对象. jQuery18007779947370290756只包含几个方法. jQuery包含更多的方法.那么什么是jQuery18007779947370290756?我没有页面的url,因为它是内部页面.我包含的lib只是 jquery-1.8.0.min.js和jquery-ui-1.8.23和
没有 JSONP调用.

看起来像是将全局事件’beforeunload’添加窗口对象.并存储在窗口[expando]中.但是,如果我将某些事件添加到其他DOM对象(如按钮)中,并且它们存储在jQuery.cache中.
这里是jQuery.cache和window的屏幕截图[jQuery1800xxxxxxxxxxxxxxxx]
我不知道为什么2点击事件的guid都是8.这两个点击事件绑定到2个按钮.并且单击事件处理程序是相同的功能.

解决方法

当您在其上存储数据时,jQuery将此属性添加到元素中.由于此属性位于窗口元素上,因此您的代码中的某个地方正在做一些相当于:
$(window).data('something',1);

请注意,jQuery事件还会在幕后使用数据模块,因此也可能是因为向窗口对象添加事件.

对于普通节点(即具有nodeType属性的元素),此值为set to a GUID(data.js#61),并且要存储在该对象上的数据存储在全局jQuery缓存中.

然而,窗口元素没有nodeType属性,所以它下降了我是一个简单的JS对象的路由;这导致数据直接存储在对象本身(在窗口的情况下,可能是jQuery的一个bug).

缓存位置(全局或对象)的选择是在L39-45 in data.js

// We have to handle DOM nodes and JS objects differently because IE6-7
// can't GC object references properly across the DOM-JS boundary
isNode = elem.nodeType,// Only DOM nodes need the global jQuery cache; JS object data is
// attached directly to the object so GC can occur automatically
cache = isNode ? jQuery.cache : elem,

在普通DOM元素的情况下,该值将在data.js#61中分配一个GUID:

elem[ internalKey ] = id = jQuery.deletedIds.pop() || jQuery.guid++;

但是在正常的JS对象(在这种情况下为窗口)的情况下,该对象内置于68 – 74

cache[id] = {};

// Avoids exposing jQuery Metadata on plain JS objects when the object
// is serialized using JSON.stringify
if (!isNode) {
    cache[id].toJSON = jQuery.noop;
}​

奇怪的值是jQuery.expando,它在data.js#14中定义,并初始化为:

"jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g,"" )

(基本上是“jQuery”,其次是jQuery版本,“.”被删除(在你的情况下为1800),然后是一个随机数字).

相关文章

页面搜索关键词突出 // 页面搜索关键词突出 $(function () {...
jQuery实时显示日期、时间 html: <span id=&quot...
jQuery 添加水印 <script src="../../../.....
中文:Sys.WebForms.PageRequestManagerParserErrorExceptio...
1. 用Response.Write方法 代码如下: Response.Write(&q...
Jquery实现按钮点击遮罩加载,处理完后恢复 思路: 1.点击按...