私のウェブサイトは、Chrome、Firefox、およびInternet Explorer 8で正常に動作します。しかし、Internet Explorer 9では、コンポーネントにカーソルを合わせると、非常に奇妙なエラーが発生します。
SCRIPT5007:プロパティ 'UI' の値を取得することができません:?オブジェクトは、D = sTHNYcjtEdStW2Igkk0K4NaRiBDytPljgMCYpqxV5NEZ1IEtx3DRHufMFtEMwoh2L3771sigGlR2bqlOxaiwXVEvePerLDCL0hFHHUFdTOM0o55K0&トン= ffffffffd37cb3a1、ライン181文字1914 nullであるか、ScriptResource.axdを未定義
また、javascriptのエラーへのリンクをたどると、次のコードが表示されます。
onNodeOver:function(B,A){A.ui.onOver(B)},onNodeOut:function(B,A){A.ui.onOut(B)}
このエラーを解決する方法については、私は少し無知です。 this ソリューションを見ましたが、それは私にとって問題を解決しませんでした。
何か案は?
多くのJavaScriptライブラリ(特に最近ではないライブラリ)は、IE9をうまく処理しません。これは、IE8が多くのことを処理する際にIE8で機能しなくなるためです。
IEをスニッフィングするJSコードは、IE9を特別に処理するように書き直されない限り、IE9ではかなり頻繁に失敗します。
JSコードを更新する前に、「X-UA-Compatible」メタタグを使用して、WebページをIE8モードに強制する必要があります。
編集:信じられない、3年後、私たちはIE11に取り組んでおり、まだこれに対する賛成票があります。 :-)多くのJSライブラリは少なくともIE9をネイティブにサポートし、ほとんどはIE10をサポートするはずです。そのため、JSライブラリをアップグレードするつもりがない限り、最近ではメタタグが必要になることはほとんどありません。ただし、IE10はクロスドメインスクリプティングとCDNベースのライブラリコードの一部の破損に関する変更を行うことに注意してください。ライブラリのバージョンを確認してください。たとえば、CDNのDojo 1.9はIE10で機能しなくなりますが、1.9.1では解決します。
編集2:やあ、みんな、[〜#〜] really [〜#〜]一緒に行動する必要がある今。私たちは今、2014年半ばにいます!!!私は[〜#〜] still [〜#〜]これに賛成票を投じています!サイトを修正して、古いIEのハードコーディングされた依存関係を取り除きます!
ため息...これが私の最も人気のある答えであることを知っていたら、おそらくもっと時間をかけて磨いたでしょう...
編集3:ほぼ2016年です。まだ投票数が増えています...レガシーコードがlotsあると思いますそこに...ある日、私たちのプログラムは私たちを生き延びます...
IE9でも同じ問題が発生していました。上記の答えに従い、次の行を追加しました。
<meta http-equiv="X-UA-Compatible" content="IE=8;FF=3;OtherUA=4" />
私の<head>
そしてそれは働いた。
私はIE4以上をスニッフィングするコードを記述し、現在は自分の個人サイトだけでなく、会社のクライアントのサイトでも完全に機能しています。
次の列挙定数と関数変数をページのjavascriptインクルードファイルに含めます...
_//methods
var BrowserTypes = {
Unknown: 0,
FireFox: 1,
Chrome: 2,
Safari: 3,
IE: 4,
IE7: 5,
IE8: 6,
IE9: 7,
IE10: 8,
IE11: 8,
IE12: 8
};
var Browser = function () {
try {
//declares
var type;
var version;
var sVersion;
//process
switch (navigator.appName.toLowerCase()) {
case "Microsoft internet Explorer":
type = BrowserTypes.IE;
sVersion = navigator.appVersion.substring(navigator.appVersion.indexOf('MSIE') + 5, navigator.appVersion.length);
version = parseFloat(sVersion.split(";")[0]);
switch (parseInt(version)) {
case 7:
type = BrowserTypes.IE7;
break;
case 8:
type = BrowserTypes.IE8;
break;
case 9:
type = BrowserTypes.IE9;
break;
case 10:
type = BrowserTypes.IE10;
break;
case 11:
type = BrowserTypes.IE11;
break;
case 12:
type = BrowserTypes.IE12;
break;
}
break;
case "netscape":
if (navigator.userAgent.toLowerCase().indexOf("chrome") > -1) { type = BrowserTypes.Chrome; }
else { if (navigator.userAgent.toLowerCase().indexOf("firefox") > -1) { type = BrowserTypes.FireFox } };
break;
default:
type = BrowserTypes.Unknown;
break;
}
//returns
return type;
} catch (ex) {
}
};
_
その後、あなたがしなければならないのは、次のような条件付き機能を使用することです...
すなわち。 value = (Browser() >= BrowserTypes.IE) ? node.text : node.textContent;
またはWindowWidth = (((Browser() >= BrowserTypes.IE9) || (Browser() < BrowserTypes.IE)) ? window.innerWidth : document.documentElement.clientWidth);
またはsJSON = (Browser() >= BrowserTypes.IE) ? xmlElement.text : xmlElement.textContent;
アイデアを得る?お役に立てれば。
ああ、IE10がリリースされた後、Browser()関数のQAを念頭に置いて、ルールを変更していないことを確認したいかもしれません。
これはIE 11:
<meta http-equiv="x-ua-compatible" content="IE=Edge; charset=UTF-8">
最後にコンマがあるかどうかを確認してください。
},
{
name: 'МОФ. Перелив из баков. м3/ч',
data: graph_high3,
dataGrouping: {
units: groupingUnits,
groupPixelWidth: 40,
approximation: "average",
enabled: true,
units: [[
'minute',
[1]
]]
}
} // if , - SCRIPT5007
ページへのアクセスをローカルで表示している場合(file://
の代わりに http://
)..
これに関するいくつかの議論がここにあります: https://github.com/jeromegn/Backbone.localStorage/issues/55