2009-10-20 6 views
17

私のページには次のJavaScriptライブラリがロードされています。jQueryはFirebugの実行中にFirefoxで動作しますが、Firebugが実行されていないと動作しません

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 
<script type="text/javascript" src="http://cdn.jquerytools.org/1.1.2/jquery.tools.min.js"></script> 
<script type="text/javascript" src="./js/jquery.scrollTo-min.js"></script> 

私はそれらを配置したいdiv要素があります。私は、このリンクを持っている

<div class="content" id="content"> 
</div> 

を:

<a id="changeText" href="rules.html">Click to change</a> 

は最後に、私は次のjQueryコードを持っている:

<script> 

$(document).ready(function() { 
$("#changeText").click(function(){ 

    var url = $(this).attr("href"); 

    $("#content").load(url); 

    console.log(url); 

    $.scrollTo("0%", 400); 
}); 
}); 
</script> 

これはすべてSafarで動作します私。話の中で最も奇妙な部分は、FirebugがオンになっているときだけFirefoxで動作するということです。 Firebugがオンになっていないときは、ページが動的に読み込まれているように見えますが、ページはrules.htmlを読み込んでスイッチします。これは私の目標です。

もちろん、これはIE8でも動作しません。

私は間違っていますか?

答えて

29

あなたはより良い

if (window.console) { 
    console.log(...); 
} 
+0

+1両方のシナリオを適切に機能させるための回避策が用意されているので、私はこの答えが気に入っていました。 –

+4

私はwindow.consoleが利用可能かどうかをチェックするlog()という関数を持っています。もしそうなら、コマンドをログに記録します。 – Shard

+0

私の一日が保存されました。 Firefox 4.0でも問題ありません:) –

11

firebugが実行されていないときはconsole.logを取り出します。これは未定義です。

+0

私も追加する必要:偽 リターンを。私の機能の最後に それ以外の場合、ブラウザはrules.htmlをロードします。 – Tylo

+0

ええ、Firebugがオンの場合、コンソールオブジェクトはSafariとFirefoxにのみ存在します。 console.logコールを取り除く必要があります。 – ohdeargod

+0

さらに一般的には、Error Consoleで問題をデバッグしてみると、console.log()がないことを伝えていたはずです。 – Nickolay

0

にすべてのあなたの

console.log(...) 

をラップと思います。また興味深いプロジェクトがあるがfauxconsoleと呼ばれる:フェイクコンソールでMicrosoft Internet ExplorerでFirebugは、SafariやOperaのデバッグコンソールをシミュレート

1

コンソールを使用する前に確認してください。

バインドブール変数ので:

var hasConsole = (typeof console != 'undefined' && typeof console.log != 'undefined'); 

そしてコンソールに書き込む前に、それをチェックしてください。

if (hasConsole) { 
     console.log("This is safe."); 
    } 

をこの方法であなたはFirebugをオンにしたときに、あなたのデバッグメッセージを取得し、あなたがそれを回しますあなたのスクリプトはまだ動作します。

1

次のコードを使用して、欠落しているログ機能をマスクすることができます。

if (typeof console === "undefined") { 
    var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", 
    "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"]; 

    window.console = {}; 
    for (var i = 0; i < names.length; ++i) 
     window.console[names[i]] = function() {} 
} 
関連する問題