Javascript Greasemonkey PostMessage mouseup函数
我有一个问题,我已经试着解决了好几天了,但是没有成功。我有以下javascript文件,在included.html网站中运行良好:Javascript Greasemonkey PostMessage mouseup函数,javascript,jquery,iframe,greasemonkey,Javascript,Jquery,Iframe,Greasemonkey,我有一个问题,我已经试着解决了好几天了,但是没有成功。我有以下javascript文件,在included.html网站中运行良好: function getSelectionText() { var text = ""; if (window.getSelection) { text = window.getSelection().toString(); } else if (document.selection && docum
function getSelectionText() {
var text = "";
if (window.getSelection) {
text = window.getSelection().toString();
} else if (document.selection && document.selection.type != "Control") {
text = document.selection.createRange().text;
}
return text;
}
$(document).ready(function (){
$('div,pre').mouseup(function (e){
alert(getSelectionText())})
});
它会提醒我网站上的选定文本。所以对于简单的网站来说效果很好。我在下一个稍微好一点的地方使用了下面的代码
我有index.html,在里面我使用iframe从另一个域打开网站——为此我使用greasemonkey、greasemonkey脚本和postmessages。
我的greasemonkey脚本看起来:
// ==UserScript==
// @name localhost iframe script
// @namespace http://localhost
// @include http://localhost/
// @version 1
// @grant none
// ==/UserScript==
alert('Test greasemonkey, it works');
function getSelectionText() {
var text = "";
if (window.getSelection) {
text = window.getSelection().toString();
} else if (document.selection && document.selection.type != "Control") {
text = document.selection.createRange().text;
}
//alert("test-get-selc");
return text;
}
$(document).ready(function (){
$('div,pre').mouseup(function (e){
// alert(getSelectionText())
parent.postMessage(getSelectionText(),"*");
})
});
// parent.postMessage("test data","*");
以及我的index.html的一部分,它是iframe的父级,我在其中接受来自iframe的postmessage:
var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
var eventer = window[eventMethod];
var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message";
// Listen to message from child window
eventer(messageEvent,function(e) {
var key = e.message ? "message" : "data";
var data = e[key];
console.log(data);
},false);
我还包括了在greasemonkey脚本中硬编码的jquery。
所以,若我用测试数据示例发送普通的postmessage,那个么它工作正常,并将数据发送到接收器。问题出在.mouseup方法中,它不发送带有所选文本示例的postmessage。有人知道如何修改它,它将在Greasemonkey脚本中工作吗?
需要修改代码的下一部分:
$(document).ready(function (){
$('div,pre').mouseup(function (e){
// alert(getSelectionText())
parent.postMessage(getSelectionText(),"*");
})
});
调试greasemonkey脚本最简单的方法是什么 我相信在编写greasemonkey脚本时,您需要使用unsafeWindow而不是window。您确定这是原因吗?:可能是重复的