我开发了一个非常简单的 Chome 扩展,它公开了一个工具栏按钮。单击按钮时,页面内容将使用 XMLHttpRequest
POST 到服务器,然后 元素的 innerHtml
被替换为从服务器返回的新内容。
由于某种原因,这会阻止 元素展开。我已经通过禁用扩展来验证这一点,这使得然后可以再次工作。
您知道为什么会发生这种情况以及如何解决它吗?代码如下供引用:
chrome.extension.onMessage.addListener(
function (request, sender, sendResponse) {
if (request.msg == "get_content") {
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4) {
if (xmlhttp.status == 200) {
document.getElementsByTagName('html')[0].innerHTML =
xmlhttp.responseText;
} else {
alert('Cannot reach russiangram.com');
}
}
}
xmlhttp.open("POST", "https://russiangram.com/translate/Default.aspx", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send(document.getElementsByTagName('html')[0].innerHTML);
sendResponse({ data: 'success' });
}
});
最佳答案
据我猜测,您在替换文档 HTML 标记内容的位置时,您可能还会替换最初位于该页面上的任何关联的 JS/CSS 引用。
也许作为测试,而不是替换 HTML 标记的内容,而是向页面添加新的 DIV 元素或其他内容并将其作为目标。这应该能让您看到选择功能是否仍然有效。
关于javascript - Chrome 扩展程序阻止 <select> 元素展开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49784665/