0

JavaScriptライブラリ「lytebox」を使用してWebページが読み込まれるときにライトボックスを開こうとしています

ここに私のコードがあります

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<script type="text/javascript" language="javascript" src="lytebox.js"></script>
<link rel="stylesheet" href="lytebox.css" type="text/css" media="screen" />

<script>
    function ShowIntro()
    {
        $lb.launch('example.jpg','showPrint:true','Orion Nebula','This is my description, which is optional');
    }
</script>

</head>


<body onLoad="ShowIntro()">
</body>
</html>

コードは firefox と chrome では正常に動作しますが、Internet Explorer 8 では動作せず、次のエラーが発生します。

Webpage error details

User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E)
Timestamp: Sat, 24 Sep 2011 05:10:04 UTC


Message: '$lb' is undefined
Line: 12
Char: 3
Code: 0
URI: file:///C:/Users/User/Desktop/lytebox_v5.1/lytebox.html

どうすれば修正できますか?

ps jqueryを必要としないため、lyteboxを使用しています。ページの他の部分(「videolightbox」など)と競合したくないためです。

4

1 に答える 1

2

推測は次のとおりです。Lytebox は、変数window.onloadを設定するために自分自身を使用します (これはスクリプトの最後で確認できます) 。そうすると、Lytebox の関数が起動する前に基本的に上書きされます。これは、IE でのこの動作を確認するように見える別の SO の質問です。$lb<body onload"...">window.onload

onloadでは、 Lytebox が独自のイベントを必要とする場合、どのようにイベントを追加しますか? サイモン・ウィリソンは、かなり古典的な記事で 7 年前に実際に解決策を考え出しました。あなたの場合、彼のアドバイスは簡単に実装できます。

<body><!-- no onload --->
  <script>
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = ShowIntro;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      ShowIntro();
    }
  }
  </script>
</body>
于 2011-09-24T05:58:24.123 に答える