我有一个问题,我已经尝试解决了几天,但它没有成功。我有以下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())})
});
它提醒我在网站上选择的文字。 (所以对于简单的网站工作正常)。我在下一个使用下面的代码更有利的事情。
我的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脚本的最简单方法是什么?