This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/100

IE7でJuggernautを使ったときにエラーが出るようなので、原因を調べてみました。

その結果、IE7では、script、embed、objectなどの特定のDOMエレメントに対して、innerHTMLに値を設定しようとするとエラーになるようです。

   1  document.createElement('script').innerHTML = 'alert(1)'; // エラー!

いまのところ、以下のように別なDOMエレメントのinnerHTMLにHTMLとして 埋め込む分には大丈夫なようです。

   1  var span = document.createElement('span');
   2  span.innerHTML = '<script type="text/javascript">alert(1)</script>';
   3  document.body.appendChild(span);
どんな意図があっての仕様変更なんだろう?

  <a id="BlogEntryExtend"></a>
  <span id="extended-text" /><p>

ともあれ、IE7に対応するようにJuggernautのJavaScriptを書き換えてみました。

   1  ---- code of public/javascripts/juggernaut.js ----
   2   
   3    _appendIECommandHandler: function() {
   4      var scriptbox = document.createElement('div');
   5      scriptbox.style.display = 'none';
   6      scriptbox.innerHTML = [
   7        '&lt;script language="VBScript"&gt;',
   8        '  on error resume next',
   9        '  Sub juggernaut_flash_FSCommand(ByVal command, ByVal args)',
  10        '   call myFlash_DoFSCommand(command, args)',
  11        '  end sub',
  12        '&lt;/script&gt;'].join("\n");
  13      document.body.appendChild(scriptbox);
  14    },
  15   
  16    _appendFlashObject: function() {
  17      var host = Juggernaut.host;
  18      var port = Juggernaut.port;
  19      var data = Juggernaut.data;
  20      var flashbox = document.createElement('div');
  21      flashbox.style.display = 'none';
  22      flashbox.innerHTML = [
  23        '&lt;object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" ',
  24          'codebase="http://download.macromedia.com/pub/shockwave/cabs/',
  25          'flash/swflash.cab#version=5,0,0,0" id="juggernaut_flash"&gt;',
  26        '&lt;param name="movie" value="/juggernaut.swf?host=', host,
  27          '&port=', port, '&juggernaut_data=', data, '"&gt;',
  28        '&lt;param name="quality" value="high"&gt;',
  29        '&lt;embed src="/juggernaut.swf?host=', host, '&port=', port,
  30          '&juggernaut_data=', data + '" quality="high" ',
  31          'name="juggernaut_flash" swLiveConnect="true" ',
  32          'type="application/x-shockwave-flash" ',
  33          'pluginspage="http://www.macromedia.com/go/getflashplayer"&gt;',
  34        '&lt;/embed&gt;'].join('');
  35      document.body.appendChild(flashbox);
  36     },

作者のAlex氏にはパッチを送っておきました。

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/100

posted by Png genki on Wed 13 Sep 2006 at 20:26

Comments:

or Preview
Social Bookmarks
  • Delicious
  • B_entry67
  • Clip_16_12_w
Services from s21g
twpro(ツイプロ)
Twitterプロフィールを快適検索
地価2009
土地の値段を調べてみよう
MyRestaurant
自分だけのレストラン手帳
Formula
ブログに数式を埋め込める数式コミュニティ