【问题标题】:content.getSelection() is not working when selected text is in iframe?Content.getSelection()在选定的文本在iframe中不起作用?
【发布时间】:2012-06-14 23:35:27
【问题描述】:

在 Firefox 扩展开发中,我想从 chrome 页面获取选定的内容,当我使用 content.getSelection() 时,它工作正常。

但如果所选文本在 iframe 中,则它不起作用。任何人都可以帮助我吗?

【问题讨论】:

  • 你能给我看一些代码吗? JSFiddle 会很好。

标签: javascript firefox firefox-addon


【解决方案1】:

您需要在已选择文本的window 对象上调用getSelection()。例如,如果内容文档中有一个<iframe id="iframe">,您将使用以下内容来获取该框架中的选择:

alert(content.document.getElementById("iframe").contentWindow.getSelection());

如果您不知道用户选择文本的位置并且想要查看所有帧,那么您应该从顶层开始递归地遍历它们,如下所示:

function getSelection(wnd)
{
  var result = wnd.getSelection();

  for (var i = 0; !result && i < wnd.frames.length; i++)
    result = getSelection(wnd.frames[i]);

  return result;
}

alert(getSelection(content));

【讨论】:

  • 感谢您的回答,我还有一个问题,我正在使用下面的网页 developer.mozilla.org/en/Building_an_Extension 开发 Firefox 扩展,我是否必须尝试附加 SDK 或两者都相同..
  • @Benz:不,经典的基于 XUL 的扩展和 Add-on SDK 非常不同。附加 SDK 的进入门槛较低,但有时限制太大。您应该选择哪种方法在很大程度上取决于您的计划和个人喜好。
  • 我认为当您将其用作循环中的条件时,您可能可以测试结果对象(对象选择)中的 rangeCount 属性。
猜你喜欢
  • 2011-12-04
  • 2011-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-27
  • 2021-03-05
  • 2012-12-15
  • 2012-02-22
相关资源
最近更新 更多