javascript - 在 amazon.com 上插入 bootstrap popover

标签 javascript jquery google-chrome-extension bootstrap-4

我正在编写一个简单的 Chrome 扩展,我想使用我的 content.js 脚本在 amazon.com 产品页面上插入一个简单的引导弹出窗口。

我在 content.js 中执行以下操作来插入弹出窗口的脚本并切换它。我知道这段代码是有效的,因为当我在使用扩展名创建的弹出窗口中运行它时,html 和 jquery 会创建一个工作弹出窗口:

$(document).ready(function(){
var title = document.getElementById('productTitle');
 htmlToInsert = '<link rel="stylesheet" type="text/css" href="bootstrap-4.3.1-dist/css/bootstrap.min.css"> <script src="jquery-3.4.1.js"></script> <script src="Popper.js"></script> <script src="bootstrap-4.3.1-dist/js/bootstrap.bundle.min.js"></script><a href="#" data-toggle="popover" title="Popover Header" data-content="Some content inside the popover">Toggle popover</a>'
title.insertAdjacentHTML('afterend', htmlToInsert);
$('[data-toggle="popover"]').popover();
})

这给了我“未捕获的类型错误:Bootstrap 的工具提示需要 Popper.js”或“$(popper) 不是函数”。我一直在环顾四周,看到一些建议,该错误可能与页面(亚马逊) namespace 中的多个版本的 jquery 有关,并且我应该使用无冲突版本的 jquery,但这不起作用。我也尝试过调整导入的顺序,但这并没有解决问题。 引用的文件是 Bootstrap 代码的本地副本。 谢谢!

最佳答案

当您将脚本注入(inject)页面时,src URL 应与您的扩展路径相关。 但按照你的方式,它实际上与亚马逊网页路径有关,这就是它不起作用的原因。

在您的 manifest.jsoncontent_scripts 部分中执行此操作(为了简单起见,我缩短了文件名,将它们更改为您的实际文件名):

"content_scripts":[{
"js":["jquery.js","Popper.js", "bootstrap.js", "content.js"],
"css":["bootstrap.css"]
}]

那么你可以在 content.js 中执行此操作:

$("body").append(`<a href="#" data-toggle="popover" title="Popover Header" data-content="Some content inside the popover">Toggle popover</a>`)

$('[data-toggle="popover"]').popover();

关于javascript - 在 amazon.com 上插入 bootstrap popover,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61568348/

相关文章:

javascript - Jquery、Html 在选中复选框时将值附加到文本字段

javascript - 有没有通用的方法来指定 jquery 中的元素

javascript - 为什么在 Chrome 扩展程序中使用 RequireJS 调用时 chrome.tabs.query() 不返回选项卡的 URL?

javascript - JS : Run a keyboard command from JavaScript

javascript - 如何防止响应单个事件而多次注入(inject)/执行内容脚本?

javascript - 以发送它们的相同顺序显示 AJAX 响应,*不*使用排队或同步请求?

javascript - Jquery检查数组是否包含子字符串

jquery - 在 Jquery 中选择和取消选择表行?

javascript - Django 管理员预填充字段不是错误 "d.Keyup is not a function"

javascript - JQuery Mobile 全站点重定向