链接在chrome扩展中不工作后,我把它们移动到不同的位置

Links not working in chrome-extension after I've moved them to a different position

本文关键字:移动 位置 扩展 chrome 工作 链接      更新时间:2023-09-26

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

var div = $('div.joinContributors').first();
if (div != null) {
    div.insertAfter($('div.filmRateBox').first());
}

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

<li><a class="link" href="link_to_another_subpage" rel="nofollow">name_of_the_link</a></li>

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

$("<a>", {"href": "link_to_another_subpage", "text": "name_of_the_link"}).insertAfter($('div.filmRateBox').first());

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

由于内容具有正常链接,默认情况下必须正确处理这些链接,因此最有可能的原因是该站点使用了自定义的单击事件处理程序,其中包含父节点检查。

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

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事件。