プロが教えるわが家の防犯対策術!

ブラウザでweb上のxmlを取得して内容を表示しようとしています。

windowsXPprosp2.0でIE6.0では動作を確認しています。
スクリプトの詳しいところは実際はよく分かっていませんがコピペに手を加えて現在の形になっています。

<title>テストページ</title>
function myCheck() {

var r = null;
if (typeof window.XMLHttpRequest == "undefined") {
if (typeof window.ActiveXObject == "function") {
try {
r = new ActiveXObject("Msxml2.XMLHTTP");
r = window.XMLHttpRequest = myXMLrequest()
{
r = new ActiveXObject("Msxml2.XMLHTTP");
}
}
catch (e) {
try {
r = new ActiveXObject("Microsoft.XMLHTTP");
r = window.XMLHttpRequest = myXMLrequest()
{
r = new ActiveXObject("Microsoft.XMLHTTP");
}
}
catch (e) {
}
}
}
// else if () { }
}
// else { }
r.onreadystatechange = function() {

if ( ( r.readyState == 4 ) && ( r.status == 200 ) ) {
以下続く

try catchの処理でIEとFierfoxなどのブラウザ分けをしていると思っているのですが教えてください。

Firefox2.0 Opera9ともに画面が真っ白で何も表示されません。

よろしくご教授ください。

A 回答 (2件)

ActiveXObjectはIE用です



http://diaspar.jp/node/50
あたりが参考になると思います

ちなみにGoogleで「activexobject firefox」で検索した時の1つめです
うまくいかない原因が判明している時は、検索してみるのもいいと思います

この回答への補足

HIRSYUさん
ご回答ありがとうございます。

ご指摘のサイトは閲覧済みです。サイト軽視のスクリプトも試しています。

一覧表もよく出来ていますがいずれもブラウザのバージョンが最新版ではありません。

Firefoxは2.0011を入れてしまったので1.5の挙動は分かりません。
現行のFirefoxでも作動するスクリプトを求めています。

よろしくご指導ください。

補足日時:2008/01/17 13:42
    • good
    • 0

ご提示のソースの場合、FireFoxでは最初のif文の中が実行されません(Operaも同様)。


以下のスクリプト(最初のifの中身です)をIE・FireFoxで実行していただくと

alert(typeof window.XMLHttpRequest == "undefined");

IEの場合…true
FireFoxの場合…false
Operaの場合…false

と表示されるのが確認できると思います。
つまり、FireFoxではそもそも最初のif文の中に入れないので、必然的にrがnullになります。
とりあえずFireFoxで動くようにするのであれば、else文を追加して

r = new XMLHttpRequest();

を実行するようにしてやればいいと思います。
なお、IE5以前などの古いブラウザを対象としないのであれば以下の記述だけで充分です。

var r = null;
if ( typeof XMLHttpRequest != "undefined" ) {
// IE以外
r = new XMLHttpRequest();
} else {
// IEの場合
r = new ActiveXObject("MSXML2.XMLHTTP");
}

この回答への補足

guppy_i2様
ありがとうございます。

結論から言いますと私の大きな勘違いだと思います。
クロスドメインを想定していましたのでたぶんご指摘の方法でも無理だと思います。

実際elseの追加、
ご掲示のソースとの張替えを実行しましたが無理でした。

if ( ( r.readyState == 4 ) && ( r.status == 200 ) ) {
以下のopenでしているファイルが外部のURLです。

ありがとうございました。

念のため2,3日待って閉鎖しお礼するつもりです。

補足日時:2008/01/18 17:31
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!