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 '<script language="VBScript">',
8 ' on error resume next',
9 ' Sub juggernaut_flash_FSCommand(ByVal command, ByVal args)',
10 ' call myFlash_DoFSCommand(command, args)',
11 ' end sub',
12 '</script>'].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 '<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">',
26 '<param name="movie" value="/juggernaut.swf?host=', host,
27 '&port=', port, '&juggernaut_data=', data, '">',
28 '<param name="quality" value="high">',
29 '<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">',
34 '</embed>'].join('');
35 document.body.appendChild(flashbox);
36 },
作者のAlex氏にはパッチを送っておきました。
This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/100