是否有可能用Javascript或其他技術來確定用戶點擊了哪個超鏈接,而無需更改超鏈接源代碼。你如何確定html點擊與JavaScript?
例如: 您可以點擊「標籤」按鈕,然後點擊託管在不同iframe中的超鏈接,並且能夠計算用戶點擊的超鏈接,而無需更改任何源代碼IFRAME?
是否有可能用Javascript或其他技術來確定用戶點擊了哪個超鏈接,而無需更改超鏈接源代碼。你如何確定html點擊與JavaScript?
例如: 您可以點擊「標籤」按鈕,然後點擊託管在不同iframe中的超鏈接,並且能夠計算用戶點擊的超鏈接,而無需更改任何源代碼IFRAME?
使用jQuery,您可以設置選擇的上下文。即
$('a',$('#iframe-id'))。click(function(){...});
然後,您可以實現一個處理iFrame超鏈接點擊的事件處理程序。處理程序中的「this」屬性將允許您詢問超鏈接並獲取諸如innerText等屬性。
您需要在每個鏈接上放置一個事件, 然後您將獲得有關特定點擊的所有信息。
這隻適用於某些文檔, ,所以如果您嘗試在iframe內的鏈接和頁面中的鏈接之間進行測試,您將無法獲得iframe鏈接的事件。
爲了附加事件的所有鏈接你需要運行在頁面中的所有鏈接, 這樣做的最好方法是通過jQuery選擇器。或其他js框架如YUI
$(「a」)。click(function(){ alert('') });
getElementsByTagName(「a」) - 將爲您提供頁面中的所有鏈接。
我剛想到一個解決方案,該工作還是存在其他選項?
解決方案將代理iframe soruce頁面的內容,用代碼替換href的代碼以調用一個可以識別哪個href被點擊的javascript函數。
然後這可以與tag'ing click結合使用以準確標記鏈接。
這也意味着原始來源,根本不需要改變。
你不需要。您的頁面可以編輯IFrame的內容。 – extraneon 2008-10-18 11:31:09
你需要什麼 - ?)
如果你有一個iframe,你作爲鏈接的目標使用,你必須做一些服務器端處理或添加一些鏈接的網址,你可以當頁面加載時讀取...
但是,檢測頁面加載時間需要頁面中腳本(即iframe內部)或一個函數,它測試iframe中頁面中元素的可用性間隔...
- 但只有當頁面來自與主頁相同的域時才能成功,因爲跨域腳本是非法的加侖,因此不可能! - )
我認爲這應該是可能的。IFrame的內容可以從外部文檔(嵌入了iframe的頁面)訪問,因此您應該能夠在iframe加載後在這些元素上添加事件處理程序(請參閱其他答案)。
另請參閱Wikipedia on Iframe它給出了一些實際上在IFrame中處理內容的示例和框架。
出於明顯的安全原因,您可以將代碼注入iframe,但只有當該iframe與注入的頁面位於相同的域時纔會注入代碼。
<iframe id="framedpage" src="framedpage.html"></iframe>
<button type="button" id="tagbutton">Tag</button>
<script type="text/javascript">
function framedclicks_bind() {
var f= document.getElementById('framedpage');
var fdoc= f.contentDocument;
if (!fdoc) fdoc= f.contentWindow.document; // for IE
if (fdoc)
for (var i= fdoc.links.length; i-->0;)
fdoc.links[i].onclick= framedclicks_click; // bind to all links
}
function framedclicks_click() {
alert('You clicked on '+this.href);
return false; // don't follow link
}
document.getElementById('tagbutton').onclick= framedclicks_bind;
</script>
可能要的清理取決於應用需求(如,爲保證框架試圖綁定之前總是加載,或者解除綁定可能發生,或者說從原來的鏈接任何onclicks被記住)但那將是事物的一般形狀。
找出哪個元素被點擊的好方法是使用事件代理。如果使用循環(通過document.links或document.getElementsByTagName)將循環附加到每個元素上,您有兩個問題: - 瀏覽器有很多監聽器需要維護 - 事件僅附加到DOM中的元素稱爲循環;之後動態添加的任何元素都沒有事件偵聽器。
事件代表團的一個簡單的例子:
document.onclick = function(e){
e = e || window.event;
var t = e.target || e.srcElement;
if(t.nodeName=='A'){
alert(t.href);
}
}
如果你想找到一個iframe中點擊鏈接只是使用iframe的contentDocument,而不是文件。
酷,thnx更新。 – Moran 2008-10-18 11:25:16