Greasemonkey PostMessage mouseup功能

时间:2014-11-23 19:42:45

标签: javascript jquery iframe greasemonkey

我有一个问题,我已经尝试解决了几天,但它没有成功。我有以下javascript文件,它在包含的index.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())})
   });

它提醒我在网站上选择的文字。 (所以对于简单的网站工作正常)。我在下一个使用下面的代码更有利的事情。

  1. 我有index.html,里面我使用iframe(我从另一个域打开网站 - 因此我使用greasemonkey,greasemonkey脚本和postmessages)。
  2. 我的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);
    

    我还包括jquery(在greasemonkey脚本中硬编码)。 所以,如果我发送正常的邮寄消息"测试数据"它的工作正常,它将数据发送到接收器。问题出在.mouseup方法中,它不会发送带有选定文本示例的postmessage。有谁知道如何修改它,它将在Greasemonkey脚本中工作? 需要修改下一部分代码:

    $(document).ready(function (){
       $('div,pre').mouseup(function (e){
          // alert(getSelectionText())
          parent.postMessage(getSelectionText(),"*");
       })
    }); 
    

    调试greasemonkey脚本的最简单方法是什么?

0 个答案:

没有答案