Javascript在Iframe或文件中打开时失败,但在作为Rails服务器的一部分打开时有效

Javascript Fails When Opened In an Iframe or as File, but Works When Opened As Part of Rails Server

本文关键字:Rails 服务器 有效 一部分 失败 Iframe 文件 Javascript      更新时间:2023-09-26

我正在尝试在iframe中呈现一些javascript。当我把它作为rails服务器的一部分打开时,Javascript就可以工作了,也就是说,我把它当作/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服务器打开文件有什么区别。

此页面使用AJAX,因此需要与web服务器进行通信。该web服务器需要与页面位于同一域中。当它作为文件打开时,这种情况不会发生。

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

祝你好运