Javascript Greasemonkey PostMessage mouseup函数

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

我有一个问题,我已经试着解决了好几天了,但是没有成功。我有以下javascript文件,在included.html网站中运行良好:

    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。您确定这是原因吗?:可能是重复的