Сбой Javascript при открытии в Iframe или в виде файла, но работает при открытии как часть Rails Server - PullRequest
0 голосов
/ 13 января 2012

Я пытаюсь визуализировать некоторый JavaScript в iframe. Javascript работает, когда я открываю его как часть моего сервера rails, т.е. я открываю его как часть каталога / public.

Однако происходит сбой, когда я открываю его как простой 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 и открытием его через сервер rails.

Ответы [ 2 ]

1 голос
/ 13 января 2012

Эта страница использует AJAX, поэтому она должна взаимодействовать с веб-сервером.Этот веб-сервер должен находиться в том же домене, что и страница.Это не может произойти, когда он открывается как файл.

0 голосов
/ 13 января 2012
Uncaught TypeError: Cannot call method 'match' of undefined
Uncaught track_afs_results is not define

Удачи, человек

...