MozTW 討論區
https://forum.moztw.org/

如何在Firefox裡使用javascript fillter屬性
https://forum.moztw.org/viewtopic.php?f=13&t=18573
1 頁 (共 1 頁)

發表人:  avseq [ 2007-04-18, 23:12 ]
文章主題 :  如何在Firefox裡使用javascript fillter屬性

下面這段javascript只能在IE使用,不能在firefox使用,要怎麼改才能在firefox裡使用呢?
代碼:
<html>
<head><title></title>
<script language="JavaScript1.1">
var img1 = new Image();
img1.src = "ap_20060728014313104.jpg";

var img2 = new Image();
img2.src = "ap_20060728014301639.jpg";

</script>

<head>
<body onLoad="init()">
<script language="JavaScript">

var maxLoops = 2;  //圖片總數
var bInterval = 2;  //圖片完全開啟之後,停留的時間,2=2秒
var count = 1;
function init() {
document.getElementById('blendtrjs').filters.blendTrans.apply();
document.images.blendtrjs.src = eval("img"+count+".src");
document.getElementById('blendtrjs').filters.blendTrans.play();
if (count < maxLoops) {
count++;
}
else {
count = 1;
}
setTimeout("init()", bInterval*500+2000);
}
</script><img src="ap_20060728014313104.jpg" id="blendtrjs" border="0" style="filter: blendTrans(duration=2);>

</body>
<html>

發表人:  風痕影 [ 2007-04-19, 07:07 ]
文章主題 : 

很可惜,沒有辦法,filter 的特效是 IE 專有的 @@"

發表人:  kourge [ 2007-04-19, 15:08 ]
文章主題 : 

而且還用 eval() = =||| 甚麼年代了...
document.images.blendtrjs.src = eval("img"+count+".src");
可以改成
document.images.blendtrjs.src = window["img"+count].src;

發表人:  訪客 [ 2007-04-21, 13:46 ]
文章主題 : 

原程式碼中 eval( "img"+count+".src") 的寫法,
使用 eval() 確實不是好主意,也無此必要,
直接寫成 = "img"+count+".src" 即可。
但是,每回執行時會分別建立暫存變數、
指定值 "img"、".scr" 給暫存變數,然後進行運算。
因此在快速循環處理的情形下,效能稍差。

kourge 寫:
可以改成
document.images.blendtrjs.src = window["img"+count].src;

不可以吧!?

建議改成:
代碼:
var count = 1, u='_', imgSrc="img_.src";
function init() {
....
document.images.blendtrjs.src = imgSrc.replace(u,count);
....


這樣 init() 每次執行時,直接由變數 u, imgSrc 取出運算。

發表人:  kourge [ 2007-04-26, 21:17 ]
文章主題 : 

Anonymous 寫:
原程式碼中 eval( "img"+count+".src") 的寫法,
使用 eval() 確實不是好主意,也無此必要,
直接寫成 = "img"+count+".src" 即可。

直接寫成 "img"+count+".src" 就會直接把類似像 "img1.src" 這樣的字串指定給 document.images.blendtrjs.src,"img1.src" 又不是有效的 src 路徑。
eval( "img"+count+".src") 是為了把實際路徑,如 ap_20060728014313104.jpg,給取出來。
而全域變數 (global variables) 都可以藉由 window 來存取,再加上 foo.bar 跟 foo['bar'] 意思是一樣的,所以可以改成 window["img"+count].src。

代碼:
var x1 = {y: 'blah'};

var a = eval('x' + '1' + '.y');
var b = 'x' + '1' + '.y';
var c = window['x' + '1'].y;

b 會等於 'x1.y',a 和 c 會等於 'blah'。

發表人:  BobChao [ 2007-04-29, 15:26 ]
文章主題 : 

如果真有需要,請參考這篇:
http://www.brainerror.net/scripts_js_blendtrans.php
(關鍵字: blendtrans firefox)

1 頁 (共 1 頁) 所有顯示的時間為 UTC + 8 小時
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/