1

この文字列を保存して localStorage に取得し、そこから取得して表示できるようにしようとしています。これが私のコードです:

var datas = new Array;
if (navigator.appName !== 'Microsoft Internet Explorer'){
    var qsVal = document.getElementsByClassName("val");
}
else{
    var qsVal = document.querySelectorAll('.val');
}
if (navigator.appName !== 'Microsoft Internet Explorer'){
    var qsKey = document.getElementsByClassName("key");
}
else{
    var qsKey = document.querySelectorAll('.key');
}
var storedPlays;
var stuff = document.getElementById("stuff");

function pushArray(){
    for (var i=0, len = qsVal.length; i < len; i++){
    thisValue = qsVal[i].value;
    thisKey = qsKey[i].value;
    datas.push([thisValue,thisKey]);
    }
localStorage.setItem('datas', JSON.stringify(datas));
}

function showStuff(){
    storedPlays = JSON.parse(localStorage.getItem('datas'));
    document.getElementById("stuff").innerHTML = storedPlays;
}

FF と Chrome では問題なく動作しますが、「showStuff」を呼び出すと、IE8 は「「localStorage」は null またはオブジェクトではありません」を返します。

興味深いのは、「localStorage」も使用する「pushArray」を呼び出すときにエラーが発生しないことです。

「localStorage」だけでなく「window.localStorage」も使用しようとしましたが、同じエラーが返されました...

Microsoft と W3 によると、IE8 は localStorage をサポートするはずですが、どこに問題があるかについて何か手がかりを持っている人はいますか? どうもありがとう!

編集-これはコードの jsfiddle です。なんらかの理由で、うまく機能しませんが、コードの感触をつかむためだけに...

4

5 に答える 5

6

私の理解によると、IE8 は有効なドメインのみにストレージを提供します。問題を解決するはずのWebサーバーに例を配置してみてください。

個々のファイルとしてテストしたときに同じ問題に直面しましたが、サーバー(私の場合はTomcat)に配置すると問題なく動作しました。

于 2012-10-08T07:03:17.183 に答える
3

癖やIE 7モードではなく、実際にIE 8モードであるかどうかを確認してください。これを行う最も速い方法は、F12 を押して開発ツールを起動することです。ブラウザ モードはそのタブの右上に表示されます。

于 2012-10-07T19:22:48.900 に答える
1

ショットとしてwindow.localStorageを使用して提供します。IE のWeb Storage の概要を参照してください。

于 2012-10-07T19:24:12.043 に答える
0

ローカル サーバー アプリケーションに Web ページを撮影させたくない場合にも、これを試してください。

  • スクリプト内のコードを探します: window['localStorage'] !== null
  • に変更します:window['localStorage'] != null

私の場合はうまくいきました。

于 2013-11-23T06:19:41.973 に答える
0

IE で開発者ツールを開いて、そのタイプの json を確認できますか。stringify と json.parse は関数であり、ローカルストレージでもあります。ネイティブ JSON が IE に存在するかどうかはわかりません。

また、オブジェクトをループ内に設定するのはなぜですか?

[編集]コードjsfiddle.net/yrhdN/2 にこのフィドルを追加すると、すべて正常に動作するようです。IE8互換モードでIE9でテストしました)

[編集] このコードについてもう 1 つ、showStuff() の innerHtml が段落で機能しないようです。html を p から div に変更し、innerText を使用すると、状況が少し改善されます。

<div id="stuff">
</div>


function showStuff(){
    var storedPlays    = JSON.parse(localStorage.getItem('datas'));
    document.getElementById("stuff").innerText = storedPlays;
}

これは IE でのみ発生するようです。更新されたフィドルは次のとおりです。http://jsfiddle.net/yrhdN/7/

于 2012-10-07T19:45:39.173 に答える