javascript
  • gwt
  • uibinder
  • 2011-04-14 5 views 0 likes 
    0

    エスケープアンパサンド(Yahoo、トラストクリックスクリプト)

    <!-- Begin: adBrite, Generated: 2011-04-14 8:40:27 --> 
    <script type="text/javascript"> 
    var AdBrite_Title_Color = '66B5FF'; 
    var AdBrite_Text_Color = '000000'; 
    var AdBrite_Background_Color = 'FFFFFF'; 
    var AdBrite_Border_Color = 'CCCCCC'; 
    var AdBrite_URL_Color = '008000'; 
    try{var AdBrite_Iframe=window.top!=window.self?2:1;var AdBrite_Referrer=document.referrer==''?document.location:document.referrer;AdBrite_Referrer=encodeURIComponent(AdBrite_Referrer);}catch(e){var AdBrite_Iframe='';var AdBrite_Referrer='';} 
    </script> 
    <span style="white-space:nowrap;"><script type="text/javascript">document.write(String.fromCharCode(60,83,67,82,73,80,84));document.write(' src="http://ads.adbrite.com/mb/text_group.php?sid=123&zs=123&ifr='+AdBrite_Iframe+'&ref='+AdBrite_Referrer+'" type="text/javascript">');document.write(String.fromCharCode(60,47,83,67,82,73,80,84,62));</script> 
    <a target="_top" href="http://www.adbrite.com/mb/commerce/purchase_form.php?opid=123&afsid=1"><img src="http://files.adbrite.com/mb/images/adbrite-your-ad-here-leaderboard.gif" style="background-color:#CCCCCC;border:none;padding:0;margin:0;" alt="Your Ad Here" width="14" height="90" border="0" /></a></span> 
    <!-- End: adBrite --> 
    

    GWTコンパイラはアンパサンド文句を言うので、私は&amp;にそれらを変更しました。

    私もアンパサンドエンティティが適切に解決できるように、私のファイルの先頭に次のように宣言するために世話をしてきました:

    <!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent"> 
    

    これは、少なくとも私は、コードをコンパイルすることができますが、結果ページは&の代わりに&amp;でレンダリングされますが、もちろんこのスクリプトは中断されます。

    スクリプトが正しく実行されるようにアンパサンドを正しくエスケープできますか?私のローダーhtml/jspでこのスクリプトを宣言し、それを私の選択したdivにレンダリングする方法はありますか?私はAdbriteのサイトで多くのドキュメントを見つけることができませんでした。

    最後に、Adbriteが、String.fromCharCodeナンセンスのリモートサイトからスクリプトが来ているということを本当に隠そうとするのは本当ですか?おそらくこれがで蹴りからのXSSフィルタリングのいくつかの種類を防止するために行われている。

    おかげ

    答えて

    0

    HTMLのコメントの間にJavaScriptコードを入れてください。 &&amp;に置き換えてください。

    <!-- Begin: adBrite, Generated: 2011-04-14 8:40:27 --> 
         <script type="text/javascript"><!-- 
          var AdBrite_Title_Color = '66B5FF'; 
          var AdBrite_Text_Color = '000000'; 
          var AdBrite_Background_Color = 'FFFFFF'; 
          var AdBrite_Border_Color = 'CCCCCC'; 
          var AdBrite_URL_Color = '008000'; 
          try{var AdBrite_Iframe=window.top!=window.self?2:1;var 
          AdBrite_Referrer=document.referrer==''?document.location:document.referrer;AdBrite_Referrer=encodeURIComponent(AdBrite_Referrer);}catch(e){var 
          AdBrite_Iframe='';var AdBrite_Referrer='';} 
        --></script> 
    
    <span style="white-space:nowrap;"> 
    <script type="text/javascript"><!-- document.write(String.fromCharCode(60,83,67,82,73,80,84));document.write(' src="http://ads.adbrite.com/mb/text_group.php?sid=123&zs=123&ifr='+AdBrite_Iframe+'&ref='+AdBrite_Referrer+'" type="text/javascript">');document.write(String.fromCharCode(60,47,83,67,82,73,80,84,62)); --></script> 
    <a target="_top" href="http://www.adbrite.com/mb/commerce/purchase_form.php?opid=123&amp;afsid=1"><img src="http://files.adbrite.com/mb/images/adbrite-your-ad-here-leaderboard.gif" style="background-color:#CCCCCC;border:none;padding:0;margin:0;" alt="Your Ad Here" width="14" height="90" border="0" /></a></span> 
         <!-- End: adBrite --> 
    
    +0

    うーん、助けていないようです。ここで

    は修正とコードです。結果のDOMを見ると、空のスクリプトタグがあり、URLの画像のアンカーは\ u0026です。あなたはこれがGWTのUIBinderであることを認識しています。申し訳ありませんが私の質問で不明だった場合。 –

    +0

    はい、私はGWTのUIBinderを使ってテストを行いました。それはうまくいった。私は、使用されているエンコーディング文字セットに関連するものかもしれないと思う。私はファイルとHTMLヘッダのUTF-8エンコーディングを使ってこのテストを行いました: '' 。 –

    +0

    DOM内のscriptタグが空では問題ありません。スクリプトは正常に動作します。 プロジェクトファイルおよびGWTプロジェクトのHTMLヘッダーで使用しているエンコード文字セットはどれですか? –

    関連する問題