Javascript 替换字符串的脚本不';有些网站不工作

Javascript 替换字符串的脚本不';有些网站不工作,javascript,jquery,google-chrome-extension,Javascript,Jquery,Google Chrome Extension,我创建了一个简单的Chrome扩展,它使用regex查找某些字符串,并用预定义文本替换匹配项。它在大多数网站上运行良好,但不知何故,脚本在例如Lifehacker(如本页)上不起作用。 代码是: $('p, h1, h2, h3, span, .content, .post-body').each(function(){ //do something with $(this) }); 你知道为什么Lifehacker的网站会抵制我的脚本吗?将你的脚本更改为以下内容: (func

我创建了一个简单的Chrome扩展,它使用regex查找某些字符串,并用预定义文本替换匹配项。它在大多数网站上运行良好,但不知何故,脚本在例如Lifehacker(如本页)上不起作用。 代码是:

$('p, h1, h2, h3, span, .content, .post-body').each(function(){
        //do something with $(this)
});

你知道为什么Lifehacker的网站会抵制我的脚本吗?

将你的脚本更改为以下内容:

(function($){
  $('p, h1, h2, h3, span, .content, .post-body').each(function(){
     console.log($(this));
  });
})(jQuery);
在他们的网站上,
$
没有用作jQuery对象的别名。上面的代码就像一个自动执行的匿名函数,将其jQuery对象作为参数,并将其视为
$
。或者,您可以将代码中的所有
$
替换为
jQuery


UPD:在您的扩展中,我会首先检查页面上是否存在/加载了
jQuery
对象,并使用
jQuery
而不是
$
,因为
$
可能会被其他JavaScript库(如mootools)使用。

将您的脚本更改为:

(function($){
  $('p, h1, h2, h3, span, .content, .post-body').each(function(){
     console.log($(this));
  });
})(jQuery);
在他们的网站上,
$
没有用作jQuery对象的别名。上面的代码就像一个自动执行的匿名函数,将其jQuery对象作为参数,并将其视为
$
。或者,您可以将代码中的所有
$
替换为
jQuery


UPD:在您的扩展中,我会首先检查页面上是否存在/加载了
jQuery
对象,并使用
jQuery
而不是
$
,因为
$
可能被其他JavaScript库(如mootools)使用.

已经考虑过AJAX/frames的可能性了吗?您是否将jQuery与您的Chrome扩展捆绑在一起?是的,jQuery与扩展捆绑在一起。@RobW,您的意思是什么?@groovy354当动态生成元素时,您不能在开始时选择它们。而且,当页面包含在一个框架内时,您不能选择它们,除非您使用
所有框架:true
,或
$('iframe').contents().find(…)
。已经考虑过AJAX/frames的可能性了吗?您是否将jQuery与Chrome扩展捆绑在一起?是的,jQuery与扩展捆绑在一起。@RobW,什么意思?@groovy354动态生成元素时,您不能在开始时选择它们。而且,当页面包含在一个框架内时,您不能选择它们,除非您使用
所有框架:true
$('iframe').contents().find(…)
。错误是什么?jQuery是否已加载?你能发布你的代码吗?Simple
不起作用
无法描述您的问题。它不会返回任何错误,但文本保持不变。“(function($){jQuery(“document”).ready(function(){jQuery('p,h1,h2,h3,span,.content,.post body')。each(function(){parse(this);});})(jQuery);”parse()函数用预定义字符串替换正则表达式的任何匹配项。replace
parse(this)
console.log($(this))并告诉我您在开发人员控制台中看到了什么;并意识到是解析函数出了问题。问题被驳回。谢谢大家的帮助!错误说明了什么?jQuery是否已加载?你能发布你的代码吗?Simple
不起作用
无法描述您的问题。它不会返回任何错误,但文本保持不变。“(function($){jQuery(“document”).ready(function(){jQuery('p,h1,h2,h3,span,.content,.post body')。each(function(){parse(this);});})(jQuery);”parse()函数用预定义字符串替换正则表达式的任何匹配项。replace
parse(this)
console.log($(this))并告诉我您在开发人员控制台中看到了什么;并意识到是解析函数出了问题。问题被驳回。谢谢大家的帮助!