LightWindow と IE7、「444 行目 - オブジェクトはこのプロパティまたはメソッドをサポートしていません」
-
09-06-2019 - |
質問
LightWindow と IE7 で、ページの読み込み時に 444 行目で JavaScript エラーがスローされるという問題を受け取り、回避しました。 lightwindow.js
, と主張し、 object does not support this property or method
. 。さまざまなフォーラムでさまざまな投稿を見つけましたが、Google の検索結果では解決策が見つかりませんでした。そのため、後で誰かや自分自身に役立つことを期待して、ここに投稿します。
多くの人がスクリプト ファイルの特定の順序を提案しましたが、私はすでにこの順序 (prototype、scriptaculous、lightwindow) を使用していました。
これらは、最終的に機能したと思われる私が実行した手順です。具体的にどの手順が問題を「修正」したかはわかりませんし、テストする時間がないため、記録としてのみここに書きます。
- lightwindow.js への呼び出しをページの下部に移動しました。
- 444 行目を次のように変更しました。
if (this._getGalleryInfo(link.rel)) {
- 1157 行目を次のように変更しました。
if (this._getGalleryInfo(this.element.rel)) {
- 最後に、1417 行目から 1474 行目までを (汚くて申し訳ありませんが)
try/catch
ブロックし、例外を飲み込みます。
編集:
これにより Firefox が壊れてしまったことに気づきました。445行目に以下を追加すると機能するようになります - try { gallery = this._getGalleryInfo(link.rel); } catch (e) { }
これはあまり良い修正ではありませんが、私のページ (「rel」タグのない lightwindow リンク、「rel」タグのあるいくつかの lightwindow リンク、および 1 つの「inline」リンクが含まれています) は、IE7 で問題なく動作するようになりました。この問題、または私の与えた解決策の問題点や改善点について何か追加したいことがあれば、コメントしてください。
解決
444 行目を次のように変更して、これを修正しました。
var gallery = this._getGalleryInfo(link.rel)
次に、後続の比較ステートメントを次のように変更します。
if(gallery.length > 0)
{
// Rest of code here...
...これにより、IE6 以降ではソートされ、Firefox などでも動作し続けたようです。
1157 行目はまったく変更していませんが、コードを読んで実際に何をしているのかを確認していないので、その関連性についてコメントすることはできません。
疑うのは?例の rel 属性 (Evoution?[man]) で使用されているものが IE で問題を引き起こしている可能性がありますが、時間をかけていくつかのことをテストしないと確信は持てません。
HTH。
他のヒント
try..catch の代わりに、使用してみてもよいかもしれません
if( this && this._getGalleryInfo )
{
//use the function
}
同じ方法で確認することもできます this.element.rel ( if(this && this.element && this.element.rel)
...) 使用する前に。
というケースもあるようです。 _getGalleryInfo
または this.element.rel
まだ初期化されていないため、まだ存在しません。存在するかどうかを確認してから、使用するかどうかを確認してください。
もちろん、私が完全に間違っている可能性もあります。それを知る唯一の方法は、テストしてみることです。
Lightwindow 2.0、IE6、IE7、IE8 (ベータ版) でも同じ問題が発生しました。IE6、IE7、IE8(ベータ版)については以下の方法で解決しました。
の代わりに:
if(gallery = this._getGalleryInfo(link.rel))
443 行目と 1157 行目に次のように記述します。
gallery = this._getGalleryInfo(link.rel)
if(gallery)
これがお役に立てば幸いです!