Re: [問題] JavaScript如何Remove掉onload?
※ 引述《gs1458 (hoi)》之銘言:
: 大家好,我又來了...( 艸)
: 這是昨天小弟弄包覆的問題發現的。
: 這是HTML:
: <img src="example.jpg" onload="loadImg(this);" />
: 這是JavaScript:
: function loadImg(me) {
: me.title = me.src;
: me.onload = function(){};
: //me.onload = null;
: }
: 完整內容:
: http://pastie.org/2785012
: 我想做的事情很明顯是要把onload給清除掉,
: 但是不曉得語法是不是錯誤的一直都清不掉,
: 發現這個問題是因為昨天我用克隆的方式來作div包覆的動作,
: 會造成image一直進行無窮迴圈的onload問題,
: 網路上大多都是介紹onload如何使用,
: 敝人找到關於Remove這個內容的文獻似乎都無效,
: 於是就再來請教各位了,謝謝。
你這個是cloneNode的問題 跟無窮迴圈沒關係阿
cloneNode會將元素複製 但是教科書上有寫所有屬性都複製 事件處理常式卻沒複製
所以應該在 http://pastie.org/2788559 程式中的14行
image.cloneNode(true) 複製出來的物件 應該是沒有onLoad事件的處理常式
不過記既然執行一直在重複跑onLoad 表示onLoad處理常式也複製到了
因此當append時 新的複製元素執行了他的onload
我測試ie ff都會
但是你用image.removeAttribute('onload');沒用阿
因為image代表原先那個被複製的元素 你要刪的是新產生的元素
所以將 http://pastie.org/2788559 程式多加一個參數 改一改就好
以下請參考
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "" rel="nofollow">http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-TW" xml:lang="zh-TW">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Image</title>
<script type="text/javascript">
function wrap(image) { //包覆img
alert('good'); //測試是否重複執行
//image.onload = function(){}; //為了先清掉onload再克隆才不會無窮迴圈
//image.onload = null;
if(image.width>800 || image.height>600) { //我是要做到圖片太大時加上超連結
var alink = document.createElement('a');
alink.target = "_blank";
alink.href = "http://www.google.com/";
//alink.appendChild(image.cloneNode(true)); //克隆一目標
//將以上分三行拆開寫 並將新物件的onload換成空物件
var x= image.cloneNode(true);
x.onload = function(){};
alink.appendChild(x);
image.parentNode.replaceChild(alink, image); //取代舊有目標
}
}
</script>
</head>
<body>
<img id="myimg" src="example.jpg" onload="wrap(this);" />
</body>
</html>
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 175.182.110.233
推
11/01 22:49, , 1F
11/01 22:49, 1F
推
11/01 22:51, , 2F
11/01 22:51, 2F
推
11/01 22:55, , 3F
11/01 22:55, 3F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):