2012-01-13 6 views
0

iframeにいくつかのjavascriptをレンダリングしようとしている。 Javascriptは、レールサーバーの一部として開くときに動作します。つまり、/ publicディレクトリの一部として開きます。iframeまたはファイルとして開いたときにJavascriptが失敗するが、Railsサーバーの一部として開いたときに機能する

しかし、私はそれを単純なhtmlファイルとして開くか、iframeの一部として開くと失敗します。私のコードは次のようになります:

<!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><script src="http://www.google.com/adsense/search/ads.js" type="text/javascript"></script><script src="http://www.google.com/uds/api/ads/3.0/7945945e138d6d2d6c753e6353976ff6/search.IN.js" type="text/javascript"></script> 
    </head> 

    <body> 


    <div class = "test" id="afs_adblock_0" style="padding: 0px px; background-color: ; height: 600px; width: 600px;" onmouseover="out_pixel = '/rd/out_pixel?target_host_path=http%3A%2F%2Fadsense.google.com&amp;pvid=7192&amp;msid=5&amp;fpos=0&amp;bpos=0&amp;bid=afs_adblock_0&amp;twiz_val=0&amp;durl=&amp;rq=350&amp;feed_id=0&amp;ex=1326646029&amp;cs=dca4b10de177c97d609359425b227904';"></div> 


    </body> 


<script type="text/javascript" charset="utf-8"> 
var pageOptions = { 
    'pubId' : 'pub-8639021338656306', 
    'query' : 'college', 
    'channel' : '5150635874' 
}; 
var afs_adblock_0 = { 
    'container' : 'afs_adblock_0', 
    'minTop' : '1x', 
    'fontFamily' : 'arial', 
    'fontSizeTitle' : '14px', 
    'fontSizeDescription' : '12px', 
    'fontSizeDomainLink' : '12px', 
    'colorTitleLink' : '#0067B1', 
    'colorText' : 'blue', 
    'colorDomainLink' : 'green', 
    'colorBackground' : '#D5E9F2', 
    'titleBold' : true, 
    'verticalSpacing' : 6, 
    'rightHandAttribution' : true, 
    'colorAdSeparator' : 'white', 
    'height' : '500px', 
    'width' : '300px', 
    'siteLinks' : true, 
'adLoadedCallback' : function(containerName, adsLoaded) {if(!adsLoaded){document.getElementById(containerName).style.display = 'none';}; track_afs_results('7192', containerName, adsLoaded, '1092dd58f07de305cb14c3a2661fe150');}}; 
document.getElementById('afs_adblock_0').style.padding='0px 20px';document.getElementById('afs_adblock_0').style.background='#D5E9F2';new google.ads.search.Ads(pageOptions, afs_adblock_0); 

    var out_pixel = '/rd/out_pixel' 
    var isOverIFrame = false; 
    function processMouseOut() { 
     isOverIFrame = false; 
     top.focus(); 
    } 
    function processMouseOver() { isOverIFrame = true;} 
    function processIFrameClick() { 
     if(isOverIFrame) { 
      var xmlHttp = null; 
      xmlHttp = new XMLHttpRequest(); 
      xmlHttp.open('GET', out_pixel, false); 
      xmlHttp.send(null); 
     } 
    } 

    function init() { 
     b = document.getElementsByTagName("body")[0]; 
     if(/MSIE/.test(navigator.userAgent)){ 
      b.onunload = function() { processIFrameClick() }; 
     } 
     else{ 
      b.setAttribute('onunload', 'javascript: processIFrameClick()'); 
     } 
     var element = document.getElementsByTagName("iframe"); 
     for (var i=0; i<element.length; i++) { 
      element[i].onmouseover = processMouseOver; 
      element[i].onmouseout = processMouseOut; 
     } 
    } 
    setTimeout("init();",800); 
    </script> 
<script src="http://www.google.com/uds/api/ads/3.0/7945945e138d6d2d6c753e6353976ff6/search.IN.js" type="text/javascript"></script> 

私はここで何が起こっているのですか? iframe内のファイルを開いて、レールサーバー経由でファイルを開くことの違いは何でしょうか。

+0

答えを見つけた場合は、解決策を提示してください。あなたの投稿を破壊しないでください。ありがとう。 – Kev

答えて

1

このページでは、したがって、それは、Webサーバーと通信する必要がある、AJAXを使用しています。そのWebサーバーは、ページと同じドメインに存在する必要があります。これは、ファイルとして開いたときには発生しません。

+0

Iframeとして開いたときにどうしてできないのですか? – Spencer

+0

まだWebサーバーから来ていないためです。 –

+0

iframeを自分のサーバーの一部だと思うようにするにはどうしてですか? – Spencer

0
Uncaught TypeError: Cannot call method 'match' of undefined 
Uncaught track_afs_results is not define 

幸運の男

関連する問題