0

私はこれを得ることができないようです:

top.document.getElementById("clickThis").setAttribute("onclick", "tinyMCE.execCommand('mceInsertContent',false,'<div style=\"width: 600px; margin: 0 auto .5em;\" class=\"wp-caption alignnone\"><a href=\"<?php echo $full_image_path; ?>\" rel=\"lightbox\" title=\"View in lightbox\"><img class=\"alignnone\" src=\"<?php echo $full_width; ?>\" alt=\"<?php echo $value; ?>\" /></a><p class=\"wp-caption-text\"><?php echo $get_image->caption; ?></p></div>');");

IE7で作業するために、オンラインで見つけることができるすべての回避策を試しましたが、誰か助けてくれるかどうか疑問に思っていますか?

4

3 に答える 3

2

Don't do that.

Instead, add an event handler by calling attachEvent / addEventListener.

于 2011-06-14T17:02:06.333 に答える
1

私は少し遅れていることを知っていますが、これも私を悩ませていました.

onclick イベント中に動的にビルドされたコードを IE で実行するには、次のようにします。

  1. 他のすべてのブラウザ用のコードを記述します。 element.setAttribute( "onclick", object.varName + "method( " + var + " )" );
  2. カスタム属性を使用して動的ステートメントを保持します: element.setAttribute( "exec", object.varName + "method( " + var + " )" );
  3. 要素がクリックされたときにカスタム属性に格納されたステートメントを実行する匿名関数を作成します。};

このアプローチは、IE7 ブラウザー モードで実行されている IE9、および現在のバージョンの Chrome と Firefox で機能しています。

注意すべき点がいくつかあります。

まず、私の場合、オブジェクト メソッドを実行する必要がありました。そのためには、オブジェクトの var 名を知る必要があります。これは、クラスを開始するときにプロパティとして設定します。したがって、object.varName プロパティは、ランタイム コードで作成して設定したものです。

第二に、「exec」は標準属性ではないため、実行したい文字列を保持するために機能します。ただし、非標準の属性を使用する限り、好きなように呼び出すことができます。

第 3 に、これが機能する理由は次のとおりです。IE、または少なくとも IE7 では、onclick イベントに無名関数を含めることしかできません。オブジェクトのメソッドまたは関数を含む変数を割り当てた場合、要素が実際にクリックされたときではなく、onclick 属性が設定されたときに関数が実行されます。私の場合、実行時に変数が変更されるため、無名関数を作成できませんでした。その代わりに、要素の属性に格納されるステートメントを動的に作成します。onclick イベントは、その属性に格納されているステートメントを実行します。

乾杯。

于 2011-08-05T16:43:44.690 に答える
0

私がこれをしたとき、夢のように働きました:

if(navigator.userAgent.indexOf("MSIE 7.0") != -1){

    document.getElementById("pb").onclick = function(){ eval( this.onClick ); };
}

そうすれば、ie7だけがそれを見ます。

于 2012-01-12T19:40:11.380 に答える