【问题标题】:JavaScript iframe onmouseup triggered by highlightingjavascript iframe onmouseup 不工作
【发布时间】:2011-09-23 23:23:16
【问题描述】:

我正在玩一些事件,我正在尝试制作一个在 iframe 中的文本突出显示时触发的事件。我想我可能会尝试使用onmouseup 事件:

<div id="instapaper_div" onmouseup="handleEvent(event)">
    <iframe id="instapaper" src ="http://www.instapaper.com/m?u=<%= @content %>" width="90%" height="90%"></iframe>
</div>


<script type="text/javascript">

    function handleEvent(oEvent) {
        alert("Event!!")
    }
</script>

&lt;%= @content %&gt; 是一个正常工作的嵌入式红宝石,以防有人想知道那是什么,但它与这里的问题无关。

如果我单击网页上 iframe 之外的任何位置(此 div 部分是我的整个 html 文件的整个正文,未在此处发布),它会正确显示警报“事件!!”。但是,如果我在 iframe 内部单击,这是我希望事件实际发生的地方,则什么也不会发生。如何让它在 iframe 中注册此事件?我尝试在 iframe 标记内使用 onmouseup ,但这不起作用。此外,如果 onmouseup 不是识别我想要的 iframe 的“文本突出显示”事件的最佳方式,我应该使用什么事件以及如何使用它?

提前致谢!

【问题讨论】:

    标签: iframe javascript-events onmouseup


    【解决方案1】:

    您无法检测到该事件,因为您的 iframe 来自不同的域,因此适用同源策略。

    基本上,SOP 意味着您不能与从您自己的域之外的域加载的任何内容的 DOM 进行交互。

    (我假设您没有从 instapaper.com 为您的网站提供服务。如果是,那么您应该能够检测到从 instapaper.com 加载的 iframe 中的事件。)

    https://developer.mozilla.org/En/Same_origin_policy_for_JavaScript

    【讨论】:

    • 请详细说明。该政策是什么意思?我该如何解决这个问题?
    • 希望答案有用;我也在努力了解 SOP。也可以在 Wikipedia 上查看。基本上,我认为您无法绕过它。除非...您抓取 instapaper 页面的内容,并将它们提供给您自己域中的用户。但我想这太复杂了,而且不会真正起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-20
    • 2022-08-03
    • 2017-12-15
    • 2016-04-02
    • 1970-01-01
    相关资源
    最近更新 更多