我正在尝试制作一个书签,它可以在任何给定的网站上对所选文字执行某些操作,但是当所选文本位于iframe中时我遇到了麻烦。
bookmarklet链接如下所示:
<a id="bookmarklet" href="javascript:(function(){if(window.myBookmarklet!==undefined)
{myBookmarklet();}
else{document.body.appendChild(document.createElement('script')).src='http://www.mywebsite.com/bookmarklet.js?';}})();
">Bookmarklet</a>
bookmarklet.js看起来像:
(function(){
var v = "1.3.2";
if (window.jQuery === undefined || window.jQuery.fn.jquery < v) {
var done = false;
var script = document.createElement("script");
script.src = "http://ajax.googleapis.com/ajax/libs/jquery/" + v + "/jquery.min.js";
script.onload = script.onreadystatechange = function(){
if (!done && (!this.readyState || this.readyState == "loaded" || this.readyState == "complete")) {
done = true;
initBookmarklet();
}
};
document.getElementsByTagName("head")[0].appendChild(script);
} else {
initBookmarklet();
}
function initBookmarklet() {
(window.myBookmarklet = function() {
if($('iframe').length > 0) {
$('iframe').each(function(){
var iframe = $(this).get(0);
var win= iframe.contentWindow? iframe.contentWindow : iframe.contentDocument.defaultView;
alert (win.getSelection().toString());
});
}
})();
}
})();
我测试了一些东西 - 我绝对可以获得框架对象,并返回其html,但getSelection只返回空。
这是一个跨域的事情,因为我的bookmarklet.js在其他地方吗?
更新: 作为参考,我特意尝试这个的页面就是这个: http://cases.iclr.co.uk/Subscr/search.aspx?path=WLR%20Dailies/WLRD%202011/wlrd2012-246