在页面上的任何iframe中获取所选文本

时间:2015-05-22 22:37:04

标签: javascript iframe

我正在尝试使用纯Javascript(没有jQuery)来遍历页面上的每个iframe,然后检查是否有任何iframe包含突出显示的(选定的)文本。然后显示一个显示突出显示文本的警报。踢球者是...... iframe的ID将不会提前知道。因此需要遍历每个iframe。仅供参考 - iframe全部位于同一个域中,因此此处不存在跨域问题。

我认为我的代码非常接近我的需要,但到目前为止还没有雪茄。

在页面加载时,我这样做......

var iframes = document.getElementsByTagName('iframe');
for (var i = 0; i < iframes.length; i++) {
    iframes[i].contentWindow.document.onmouseup = function() { 
        var iframeSelection = iframes[i].contentWindow.document.getSelection(); 
        if (iframeSelection.toString().length > 0) { alert(iframeSelection); }
    }
}

此外...对于此特定项目,它只需要在Chrome中运行。

谢谢!

1 个答案:

答案 0 :(得分:0)

您的iframe和选择代码没问题,但是您已经遇到common JavaScript mistake for个圈i将始终等于iframes.length运行事件处理函数的时间。

您可以通过使用Array.prototype.forEach

进行迭代来避免这种情况
var iframes = document.getElementsByTagName('iframe');

[].forEach.call(iframes, function(frame) {
    frame.contentWindow.document.onmouseup = function() { 
      var iframeSelection = frame.contentWindow.getSelection(); 
      if (iframeSelection.toString().length > 0) { alert(iframeSelection); }
  }
});

JSBin