2006年8月15日 星期二

IE 對錯誤 Html 語法的處裡 與 javascript 操作 dom 的問題   [+/-]

Ticore's Blog

IE 瀏覽器 對於 Html 語法的處裡非常寬鬆
對於錯誤的 Html 標籤寫法幾乎不會出現任何警告
大部分情況下,也都還可以正常的顯示頁面
不過用 javascript 存取 dom 資料時就會出現奇怪的錯誤訊息了
"Internet Explorer 無法開啟網際網路網站,操作已終止"

真是讓人二丈金剛摸不著頭緒
下次遇到這種情況,記得先檢查 Html 語法有沒有寫錯

Read more...

2006年8月6日 星期日

終極快速活化所有 IE ActiveX Object   [+/-]

Ticore's Blog

接續之前的 快速活化所有 IE ActiveX Object
再推出 終極版
連外部 Javascript File 都不需要了
只要在 後面加上一行

<script src="javascript:'document.body.innerHTML+=\'\'';"></script>



就可以讓該頁面所有的 ActiveX Object 活化

這個方式是出於好奇,研究而發現的
比較適合不需要加入參數控制的 ActiveX 物件使用
像是一般 Flash 動畫等

假如需要加入參數或是其它控制
仍然建議使用
SWFObject
http://blog.deconcept.com/swfobject/

或是官方標準的做法

2006/10/12
測試之後發現,在 IE 用 JS innerHTML 無法取得 password 文字欄位的值....
所以對整個 body.innerHTML 處裡之後,密碼欄位的值遺失掉了~~
可以把 innerHTML 的處裡範圍縮小,只對含有 ActiveX 物件的 html node 作處裡~~
另外,有朋友回報,我也用 IE 7 RC 1 測過,IE 7 並不支援這樣的做法~~~
後來才發現這樣的寫法原來是 IE 6 的安全漏洞,常被別人用來做騷擾程式~~ ^^"

Read more...

2006年8月4日 星期五

AS 3.0 利用 function scope 暫存變數   [+/-]

Ticore's Blog

續上篇~~

以往 AS function 內執行動作,幾乎都是一閃而過
想要留住甚至暫存資料在 function scope 內幾乎是不可能的事情
而且一個 function 也不能夠建立多個獨立的 function scope


以下示範利用 AS 3.0 建立多個 function scope 來暫存參數
Read more...

AS 3.0 利用匿名函式模擬多層 Block Scope   [+/-]

Ticore's Blog

ActionScript 3.0 scope 的功能比以前加強許多
但是還是不支援大括號包圍起來的變數生存範圍
不過可以用匿名函式來達到類似的效果

package {
 import flash.display.Sprite;
 
 public class FunctionTest extends Sprite {
 
  public function FunctionTest () {
  
   // 以 function block scope 模擬多層 local block scope 的方式
   // Inner Block 可以直接存取 Outer Block 變數
   // Outer Block 無法取得 Inner Block 變數
  
   trace(foo);   // null
   var foo:String = "Foo Block 1";
   var out:String = "Outer Block Var";
   trace(foo);   // Foo Block 1
   
   (function():void{
   
    trace(out);  // Outer Block Var
    trace(foo);  // undefined
    var foo:String = "Foo Block 2";
    trace(foo);  // Foo Block 2
    
    (function():void{
     trace(out); // Outer Block Var
     trace(foo); // undefined
     var foo:String = "Foo Block 3";
     trace(foo); // Foo Block 3
    })();
    trace(foo);  // Foo Block 2
   
   })();
   trace(foo);   // Foo Block 1
   
  }
 }
}

Read more...