6

私は自分のウェブサイト用に、以下のサイトで言及されている同様の種類の画像ビューアを作成しました。 http://www.javascriptkit.com/script/script2/backbox/ 画像ビューアは Chrome では正常に動作しますが、Internet Exlporer では動作しません。セキュリティ上の理由から、私の Web サイトの詳細は提供していませんが、Chrome と Internet Explorer で以下のリンクをコピーして貼り付けることで問題を確認できます。 http://www.javascriptkit.com/script/script2/backbox/

上のリンクの画像をクリックして、Internet Explorer でエラーを確認し、他のブラウザで同じことを確認して、動作状態を確認してください... PFB スナップ ショット

Internet Explorer で動作しない理由を教えてください。

IE F12 devolper ツール コンソール領域からのエラー メッセージは次のとおりです。

SCRIPT5007: プロパティ 'replace' の値を取得できません: オブジェクトが null または未定義の Effects.js、1 行目の文字 1747

Effects.js = http://www.javascriptkit.com/script/script2/backbox/js/effects.js

サンプルの js ファイルが必要な場合は、http: //www.javascriptkit.com/script/script2/backbox/backboxfiles.zip から入手してください。

使用される HTML は次のとおりです。

<link rel="stylesheet" href="backbox.css" type="text/css" />
<script type="text/javascript" src="js/prototype.compressed.js"></script>
<script type="text/javascript" src="js/scriptaculous.js?load=effects"></script>
<script type="text/javascript" src="js/lightbox.js"></script>
<script type="text/javascript" src="js/dhtmlHistory.js"></script>
<script type="text/javascript" src="js/customsignsheader.js"></script>

<div onclick="dhtmlHistory.add('location1',{message: 'backbox'});countdown()">
<a href="images/babyhand.jpg" rel="lightbox[slide]" caption="A Bunch of Grapes">
<img src="images/sunset.jpg" alt="lime" width="400" height="300" border="0" /></a>
</div>

<a href="images/desert.jpg" rel="lightbox[slide]" caption="Sunflower"></a>
<a href="images/beech.jpg" rel="lightbox[slide]" caption="Dolphin"></a>
<a href="images/lime.jpg" rel="lightbox[slide]" caption="Waterfall"></a>

<script type="text/javascript" src="js/customsignsfooter.js"></script>

ここに画像の説明を入力

4

3 に答える 3

3

これがChromeではなくIEで発生する理由についてはif(/MSIE/.test(navigator.userAgent)、ブラウザがIEの場合に当てはまるこの条件が 原因です。

コメントで述べたように、問題を修正するために、「未定義」条件を追加できます。
この行を置き換えるだけです:

if(/MSIE/.test(navigator.userAgent)){Element.setStyle(_10,{filter:Element.getStyle(_10,"filter").replace(/alpha\([^\)]*\)/gi,"")+"alpha(opacity="+_11*100+")"});}  

と:

if(/MSIE/.test(navigator.userAgent)){var filterStyle=Element.getStyle(_10,"filter");if(typeof(filterStyle)!="undefined"){Element.setStyle(_10,{filter:filterStyle.replace(/alpha\([^\)]*\)/gi,"")+"alpha(opacity="+_11*100+")"});}}

そしてこの行:

if(/MSIE/.test(navigator.userAgent)){Element.setStyle(_10,{filter:Element.getStyle(_10,"filter").replace(/alpha\([^\)]*\)/gi,"")});}

と:

if(/MSIE/.test(navigator.userAgent)){var filterStyle=Element.getStyle(_10,"filter");if(typeof(filterStyle)!="undefined"){Element.setStyle(_10,{filter:filterStyle.replace(/alpha\([^\)]*\)/gi,"")});}}

Effects.jsファイル内

于 2012-11-19T14:37:45.443 に答える
1

Internet Explorer は現在、HTML5 を完全にはサポートしていません。したがって、HTML5 関連のタグまたは要素の操作は失敗します。これらのタグが存在すると IE に信じ込ませるhtml5shivライブラリを含めることを試みる価値があります。

于 2012-11-17T19:28:13.867 に答える
1

IE で開発者ツールを開き (F12 キーを押します)、[コンソール] タブをクリックします。そこに、effects.js スクリプトにエラーがあることを確認できるはずです。

SCRIPT5007: Unable to get value of the property 'replace': object is null or undefined 
effects.js, line 1 character 1747

これにより、少なくとも探し始める場所が得られるはずです。

...そしてあなたがそんなに怠け者なら、それが失敗している実際のコード行はこれです:

Element.getStyle(_10,"filter").replace(/alpha\([^\)]*\)/gi,"")

getStyle の呼び出しは明らかに null を返しているため、その後の replace の呼び出しは失敗します。

于 2012-11-13T14:19:21.737 に答える