首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >链接在我将它们移动到不同的位置后不能在chrome-extension中工作

链接在我将它们移动到不同的位置后不能在chrome-extension中工作
EN

Stack Overflow用户
提问于 2016-09-12 16:06:32
回答 1查看 33关注 0票数 0

我的google-chrome-extension在页面加载后将某些div移到不同的位置:

代码语言:javascript
复制
var div = $('div.joinContributors').first();
if (div != null) {
    div.insertAfter($('div.filmRateBox').first());
}

并且存储在该div中的链接不再起作用。当我使用Chrome开发工具检查html代码时,我可以看到:

代码语言:javascript
复制
<li><a class="link" href="link_to_another_subpage" rel="nofollow">name_of_the_link</a></li>

但是当我创建新的链接并将其添加到那里时,一切都很正常:

代码语言:javascript
复制
$("<a>", {"href": "link_to_another_subpage", "text": "name_of_the_link"}).insertAfter($('div.filmRateBox').first());

你知道他们为什么不工作吗?

EN

回答 1

Stack Overflow用户

发布于 2016-09-12 17:51:08

由于内容有正常的链接和正确的URL,默认情况下必须正确处理,最可能的原因是站点使用了带有父节点检查的自定义单击事件处理程序。

一个简单的解决方案是作为HTML插入以重新创建精确的布局,但去掉所有事件处理程序:

代码语言:javascript
复制
var $div = $('div.joinContributors').first();
if ($div.length) {
    $('div.filmRateBox').first().after($div.prop('outerHTML'));
    $div.remove();
}

请注意,document.querySelector$('...').first()快得多,因为它不会构建整个集合。

另一个很不可靠的解决方案是删除事件处理程序,但它只适用于可通过jQuery._data(element, 'events').onxxxxx DOM属性访问的jQuery事件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39445857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档