2011-06-23 47 views
17

Tôi muốn xử lý sự kiện click trên số iframe với trình xử lý nhận được thông số id của iframe.Thêm trình xử lý sự kiện nhấp vào iframe

Tôi có thể thêm một handler onClick sự kiện thông qua JavaScript như sau và nó hoạt động tốt:

iframe.document.addEventListener('click', clic, false); 

Nhưng trong trường hợp này tôi không thể vượt qua một tham số để clic(). Tôi đã cố gắng in this.id trong clic() nhưng không có kết quả.

onClick Thuộc tính HTML không hoạt động chút nào, trình xử lý không được gọi.

<html> 
<head> 
<script type="text/javascript"> 
function def() { 
    myFrame.document.designMode = 'on'; 
} 
function clic(id) { 
    alert(id); 
} 
</script> 
</head> 
<body onLoad="def()"> 
<iframe id="myFrame" border="0" onClick="clic(this.id)"></iframe> 
</body></html> 
+0

như bình luận bởi [deepi] (http) : //stackoverflow.com/users/787076/deepi) trong một câu trả lời: 'mã của bạn (những gì bạn đưa lên đầu) đang hoạt động tốt. Nhưng nó hoạt động khi bạn bấm chính xác trên đường viền không nằm trong hộp bên cạnh –

Trả lời

10

bạn có thể sử dụng đóng cửa để vượt qua các thông số:

iframe.document.addEventListener('click', function(event) {clic(this.id);}, false); 

Tuy nhiên, tôi khuyên bạn nên sử dụng một approac tốt hơn h để truy cập vào khung của bạn (tôi chỉ có thể giả định rằng bạn đang sử dụng cách DOM0 để truy cập cửa sổ khung theo tên của họ - một thứ chỉ được giữ lại để tương thích ngược):

document.getElementById("myFrame").contentDocument.addEventListener(...); 
+0

cảm ơn wladimir .... u đã giải quyết một nửa prblm của tôi ... nhưng vẫn this.id là nt làm việc. nếu tôi vượt qua "hello world" thì nó sẽ được in nhưng đối với this.id nó nói "undefinied" trong hộp cảnh báo: S – samach

+0

Phải, đó là vì bạn đã thêm người nghe vào tài liệu - và tài liệu không có ID. Bạn có thể muốn thêm nó vào phần tử '