2010-03-26 53 views
2

**我目前使用jQuery的textselect基於插件的任何地方選擇文本 在頁面上火災警報和它工作得很好做這樣的事情:jQuery和事件結合到一個iframe

$(document).ready(function() { 
    $(document).bind('textselect', function(e) { 
     alert(e.text); 
    }); 
}); 

因爲我不得不在頁面中添加一個iframe,並且我需要選擇文本以處理iframe中的文本。我試圖做這樣的事情,但它不工作:

$(document).ready(function() { 
    $('#iframeId').load(function() { 
    $(document.getElementById("iframeId").contentWindow).bind('textselect',function(e) { 
    alert(e.text); 
    }); 
}); 

在這一點上我已經試過的方式來引用的iframe文檔沒有任何成功的整體混亂。任何想法**

回答

5

您可以像這樣訪問它?

$(document).ready(function() { 
    $('#iframeId').load(function() { 
    alert("Loaded"); 
    $('#iframeId').contents().find("body").bind('textselect', function(e) { 
     alert(e.text); 
    }); 
    }); 
}); 

注:這僅適用於當iframe是裝在同一個域的東西,否則你會被其封鎖起源政策。

+0

這似乎不起作用。這是使用的插件。 http://plugins.jquery.com/project/textselect – dbr 2010-03-26 21:28:41

+0

@dbr - 用不同的方法更新了答案,但我很少在框架中使用自定義事件,不確定它將如何表現。 – 2010-03-26 21:54:31

+0

這確實會啓動iframe內容的文本選擇提醒。但是,爲了使其起作用,所選文本必須位於父頁面上。除非在父頁面上預先選擇了文本,否則在iframe上選擇文本不會執行任何操作。 e.text正在帶回父級選擇,而不是iframe選擇。有沒有辦法將事件「e」集中到iframe而不是父母? – dbr 2010-03-28 16:22:56

0

以下是我最終做的僅供參考......您發送的內容。原始函數傳入一個文檔對象。對於iframe文檔對象,我做了類似的操作:

window.frames["ifFrameName"].document