我有一个帖子系统,发布者可以在其中嵌入代码到另一个网站来引用内容。但是,我在使用 LookBook.nu 网站时遇到问题。
此嵌入代码的站点包含一个脚本标记,该标记调用 jQuery 1.6
并导致我的系统崩溃。
我想用正则表达式删除这个脚本标签。这可能吗?
这是嵌入的代码:
<!--BEGIN HYPE WIDGET-->
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" type="text/javascript"></script>
<script src="http://lookbook.nu/look/widget/7625244.js?include=all&size=medium&style=button&align=center"></script><div id="hype_container_7625244">
</div>
<!--END HYPE WIDGET-->
Ps:不切实际的使用noConflict是因为我必须替换我系统的所有脚本。我要花很长时间才能做到这一点。
** 抱歉,我不会说英语。谷歌翻译是我最好的 friend 。 :D
最佳答案
在这种情况下,最大的问题是代码片段如何进入您的 HTML 源代码。如果您通过 AJAX 动态加载代码并使用 .innerHTML() (或 JQuery 的 .html() 方法)添加它,您可以首先使用正则表达式过滤它并替换有问题的脚本标记。我会尝试这样的事情:
\<script\s+src\=["'][^>]*?jquery[^>]*?\>\<\/script\>\n?
如果您在将代码注入(inject) DOM 之前使用它并将其替换为空字符串,那么应该没问题。
如果您已经在服务器端输出代码,例如在 PHP 中,您还可以在回显之前用 preg_replace()
替换该标记。
重要的是在将其插入 DOM 之前进行清理。
P.S.:模式已更新,以防止其与前面的另一个标签匹配。
关于javascript - JQUERY 时删除标签脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31676263/