我制作了Chrome扩展程序以方便网页内容捕获(只需将内容复制到我服务器上的数据库中,然后通过简单的选择' +'点击')进行进一步处理,但主要的商业网站似乎阻止了getSelection()函数。它只适用于我自己的网站和维基百科。它们如何阻止它?是否可以取消阻止?
popup.js中的示例代码来测试这个问题非常简单。单击扩展图标时执行:
window.addEventListener("load",init);
function init() {
chrome.tabs.query({active:true, windowId: chrome.windows.WINDOW_ID_CURRENT},
function(tab) {
chrome.tabs.sendMessage(tab[0].id, {method: "getSelection"},
function(response){
chrome.extension.getBackgroundPage().console.log(response);
}
);
}
);
}
听众代码是:
[niko@dev1 ext]$ cat selection.js
chrome.extension.onMessage.addListener(function(request, sender, sendResponse) {
if (request.method == "getSelection") {
sendResponse({data: window.getSelection().toString()});
}else {
sendResponse({});
}
});
[niko@dev1 ext]$
当我使用维基百科时,我在控制台中选择没有任何问题:
Object {data: "nal networks of newspapers. The Democratic party w…rs, Evangelical Protestants, and social reformers"}
但是,当我使用一些顶级新闻网站时,我什么也得不到:
Object {data: ""}
这些网站如何阻止getSelection()方法?