Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquerybookmarklet由于未知原因偶尔工作_Javascript_Jquery_Bookmarklet - Fatal编程技术网

Javascript jquerybookmarklet由于未知原因偶尔工作

Javascript jquerybookmarklet由于未知原因偶尔工作,javascript,jquery,bookmarklet,Javascript,Jquery,Bookmarklet,我创建了一个bookmarklet,它使用jQuery计算HTML中某些和标记的出现次数,并使用alert()显示计数。它在大多数情况下都能工作,但有时会表现出两种不同的意外行为:1)单击bookmarklet时不会发生任何事情,或2)单击bookmarklet将导致页面在空白页面上仅重新加载文本“[object HtmlScript Element]”。无论搜索的特定和标记是否在此页面上,脚本都应该工作。例如,bookmarklet在stackoverflow上工作,即使它不包含特定的标记。然

我创建了一个bookmarklet,它使用jQuery计算HTML中某些
标记的出现次数,并使用alert()显示计数。它在大多数情况下都能工作,但有时会表现出两种不同的意外行为:1)单击bookmarklet时不会发生任何事情,或2)单击bookmarklet将导致页面在空白页面上仅重新加载文本“[object HtmlScript Element]”。无论搜索的特定
标记是否在此页面上,脚本都应该工作。例如,bookmarklet在stackoverflow上工作,即使它不包含特定的标记。然而,它在一些网站(也没有特定的标签)如google.com上不起作用

这是一个带有spcific
标记的页面,但当单击bookmarklet时,它不会执行任何操作:

以下是bookmarklet代码的全部内容:

javascript:
if (typeof jQuery == 'undefined') {
    var jQ = document.createElement('script');
    jQ.type = 'text/javascript';
    jQ.onload=runthis;
    jQ.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js';
    document.body.appendChild(jQ);
} else {
    runthis();
}

function runthis() {
    alert("total div tags: " + $('div[id^="inqC2C"]').length + "\ntotal script tags: " + $('script[src*="inq.com"]').length);
}

有人能提供一些见解吗?

您需要测试jQuery/$。它偶尔失败的原因是正在加载jQuery,但在对其求值之前,您正在启动特定于jQuery的调用。您需要测试jQuery,如下所示:

javascript:
    function loader() {
    var jQ = document.createElement('script');
    jQ.type = 'text/javascript';
    jQ.onload=runthis;
    jQ.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js';
    document.body.appendChild(jQ);
};

function runthis() {
    if (if (typeof jQuery == 'undefined') {
        setTimeout(function() {
            loader();
        }, 300);
    } else {
        alert("total div tags: " + $('div[id^="inqC2C"]').length + "\ntotal script tags: " + $('script[src*="inq.com"]').length);
    }
};

function test() {
    if (typeof jQuery == 'undefined') {
        loader();
    } else {
        runthis();
    }
};

test();

您需要测试jQuery/$。它偶尔失败的原因是正在加载jQuery,但在对其求值之前,您正在启动特定于jQuery的调用。您需要测试jQuery,如下所示:

javascript:
    function loader() {
    var jQ = document.createElement('script');
    jQ.type = 'text/javascript';
    jQ.onload=runthis;
    jQ.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js';
    document.body.appendChild(jQ);
};

function runthis() {
    if (if (typeof jQuery == 'undefined') {
        setTimeout(function() {
            loader();
        }, 300);
    } else {
        alert("total div tags: " + $('div[id^="inqC2C"]').length + "\ntotal script tags: " + $('script[src*="inq.com"]').length);
    }
};

function test() {
    if (typeof jQuery == 'undefined') {
        loader();
    } else {
        runthis();
    }
};

test();
像www.laboutique.bouyguestelecom.fr这样您的bookmarklet不起作用的站点已经禁用了
$
别名(通过使用
jQuery.noConflict()

不要一直使用
$
符号,而是
jQuery

alert("total div tags: " + jQuery('div[id^="inqC2C"]').length 
    + "\ntotal script tags: " + jQuery('script[src*="inq.com"]').length);
像www.laboutique.bouyguestelecom.fr这样您的bookmarklet不起作用的站点已经禁用了
$
别名(通过使用
jQuery.noConflict()

不要一直使用
$
符号,而是
jQuery

alert("total div tags: " + jQuery('div[id^="inqC2C"]').length 
    + "\ntotal script tags: " + jQuery('script[src*="inq.com"]').length);

谢谢你的建议。这部分起了作用:添加test()函数以确定jQuery是否已加载。但是,修改后的脚本与计时器不兼容。因此,test()函数解决了使用空白页面重新加载页面的问题。但另一个问题仍然存在:bookmarklet在一些网站上仍然没有任何作用,比如我上面列出的链接:www.laboutique.bouyguestelecom.fr还有其他想法吗?谢谢你的想法。这部分起了作用:添加test()函数以确定jQuery是否已加载。但是,修改后的脚本与计时器不兼容。因此,test()函数解决了使用空白页面重新加载页面的问题。然而,另一个问题仍然存在:bookmarklet在一些网站上仍然不起任何作用,比如我上面列出的链接:www.laboutique.bouyguestelecom.fr还有其他想法吗?爱德华解决了一半的问题。他添加的test()函数解决了在运行脚本的其余部分之前确定jQuery是否已加载的问题。然而,另一个问题仍然存在:bookmarklet在一些网站上仍然不起任何作用,比如我上面列出的链接:www.laboutique.bouyguestelecom.fr还有其他想法吗?爱德华解决了一半的问题。他添加的test()函数解决了在运行脚本的其余部分之前确定jQuery是否已加载的问题。然而,另一个问题仍然存在:bookmarklet在一些网站上仍然不起任何作用,比如我上面列出的链接:www.laboutique.bouyguestelecom.fr还有其他想法吗?