2011-01-27 41 views
3

Firefoxで動作しているJavaScriptに問題があります。以下のスクリプトは、Firefoxを除く他のブラウザで問題なく動作します。Firefoxでエラーが発生しました。

var vars = [], hash; 
       var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'); 

       for(var i = 0; i < hashes.length; i++) 
       { 
        hash = hashes[i].split('='); 
        vars.push(hash[0]); 
        vars[hash[i]] = hash[1]; 
       } 
       if (vars[0] != ' ') 
       { 
        document.all['companyURL'].innerHTML = vars[0]; 
        document.getElementById('domain').value = vars[0]; 
       } 

ので、このコードは、ページのロード時に実行され、URLの後に値を取得し、URLにあるものとページ内のテキストの行を交換する必要があります。

これは、それが(yourcompany.com)を交換する必要があるテキストの行です:

<h1><a href="" id="companyURL" name="companyURL">yourcompany.com</a> is available.<img src="images/checkmark_64.png" alt="check image"></h1> 

URLは「google.com?hello.com」であれば、そのページ内のテキストをする必要があります"yourcompany.com"から "hello.com"に変更しますが、Firefoxでページが読み込まれると、 "document.all is undefined"のエラーが表示され、これでコード行が指し示されます。

document.all['companyURL'].innerHTML = vars[0]; 

なぜこのようなことが起こっているのかわかりません。この問題を解決するための情報をオンラインで見つけることはできません。助けてください!

ありがとうございます!

+1

http://www.reloco.com.ar/mozilla/compat.htmlは、あなたには何らかの用途があるはずです。getElementById()を使用してください。 –

答えて

7

を使用することができます。

document.all['companyURL'].innerHTML = vars[0]; 

と:

document.getElementById('companyURL').innerHTML = vars[0]; 
+0

それは働いた!両方のあなたに男のありがとう! –

6

document.allのは、モジラ/ FF

によってサポートされていない、あなただけの置き換えdocument.getElementById("companyURL")

+1

もっと正確に言えば、document.allはMicrosoftによって発明され、IE 4で導入されました。問題は、ページにname = "ab"のフィールドとid = "ab"のフィールドがある場合、 document.all?疫病のようにそれを避けてください。 – Spliffster

+0

もっと正確に言えば、 'document.all'はFirefoxでは標準モードでは全くサポートされていませんし、Quirksモードでは' name'や 'id'属性による要素へのアクセスは含まれていません。 –

+0

奇数モードでは、Firefoxは 'document.all.tags()'以外の 'document.all'をすべてサポートしています。 (私は間違って最初にテストした。) –

1

document.allのです古いIE4標準です。あなたはdocument.getElementById()を使用する必要があります

異なるブラウザの実装を抽象化する一般的なJavaScriptライブラリの1つを活用することをお勧めします。

関連する問題