关于获取在框架页中选中文本的问题(Fx)
======================================================发现加上 try 就可以了[code]function(){
var _frames = document.getElementsByTagName('iframe');
for (var i = 0; i < _frames.length; i++)
try{
if (_frames[i].contentDocument.getSelection)
return _frames[i].contentDocument.getSelection();
}
catch(err){}
}[/code]======================================================
只讨论 Fx 的环境,因为 IE 很容易……[code]function(){return document.getElementById('frmBar').contentDocument.getSelection();}[/code]这种方法可以,但是需要框架页标签包含 id。[code]function(){
var _frames = document.getElementsByTagName('iframe');
for (var i = 0; i < _frames.length; i++)
if (_frames[i].contentDocument.getSelection)
return _frames[i].contentDocument.getSelection();
}[/code]这种方法属于抽筋那种,偶尔会成功一次。
[[i] 本帖最后由 水鑫日 于 2008-12-5 13:46 编辑 [/i]] 一般iframe没有ID的话也该有name吧,比如name="frmBar",可以用top.frames["frmBar"].contentDocument.getSelection这样的引用试试。另外我疑惑一定要用contentDocument吗,直接用document行不行? 我的意思是想要通用的方法,而不需要知道 id 、name 之类的属性。
在火狐中,要通过 javascript 操作子框架中的内容好像只能用 contentDocument 和 contentWindow 的方法。contentWindow 倒是还包含一个 document 对象。
[[i] 本帖最后由 水鑫日 于 2008-12-2 15:31 编辑 [/i]] [quote]原帖由 [i]水鑫日[/i] 于 2008-12-2 15:29 发表 [url=http://mozilla.sociz.com/redirect.php?goto=findpost&pid=157258&ptid=27173][img]http://mozilla.sociz.com/images/common/back.gif[/img][/url]
我的意思是想要通用的方法,而不需要知道 id 、name 之类的属性。 ... [/quote]
这样的话也只能用top.frames[NUM].contentDocument.getSelection 这样的形式了。。 我这里也不知道是怎么回事 frames 集合只有长度正常,其它的就用不了了,属性就跟 window.self 对象一样,完全不像是对象集合。
有没有其它的办法啊?g了也没用。 不介意的话,把源文件发上来,大家研究下 就是用书签加载一个划词的脚本,很简单。但是框架页的问题解决不了,权限不够不好使。
只是不想用那几个扩展的脚本,这种不常用的没必要每次都加载。 试试这个现成的:javascript:void((function()%20{var%20element=document.createElement('script');%20element.setAttribute('src',%20'http://dict.cn/hc/init.php');%20document.body.appendChild(element);})()) 谢谢了,这个我做好了,就是框架页取词的问题没解决。
Dict.cn 的这个也不能在火狐的框架页中取词
页:
[1]