2011-06-28 135 views
0

我正在玩事件,我正在嘗試創建一個事件,當我的iframe中的文本突出顯示時觸發。我想我可能會嘗試使用onmouseup事件:javascript 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> 

<%= @content %>是嵌入紅寶石的情況下,任何人都可以正常工作的一塊想知道那是什麼東西,但它不是有關這方面的問題。

如果我在網頁上點擊iframe外部的任何地方(這個div部分是我整體HTML文件的全部內容,這裏沒有發佈),它正確顯示警報「Event !!」。但是,如果我在iframe中單擊,這是我希望事件實際發生的位置,則不會發生任何事情。我如何獲得它在iframe中註冊這個事件?我嘗試在iframe標籤內使用onmouseup,但沒有奏效。另外,如果onmouseup不是識別iframe的「文本突出顯示」事件的最佳方式,這是我想要的,我應該使用什麼事件以及如何使用它?

在此先感謝!

回答

0

您無法檢測到該事件,因爲您的iframe來自不同的域,因此適用同源策略。

基本上,SOP意味着你不能與DOM之間的任何東西加載從你自己的領域加載。

(我假設你沒有從instapaper.com服務您的網站。如果你是,那麼你應該是一個能夠檢測從instapaper.com加載一個iframe的事件。)

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

+0

請詳細說明。該政策意味着什麼?如何解決該問題? – Kvass

+0

希望答案是有用的;我也試圖讓我的頭腦也圍繞着SOP。請在維基百科上查看它。基本上,我認爲你不能繞過它。除非......你刮掉instapaper頁面的內容,並將它們從你自己的域中提供給你的用戶。但我認爲這太複雜了,並不會真正起作用。 – bbg