2011-11-09 60 views
9

我有幾個廣告網絡已經能夠集成回傳URL(付費廣告展示不可用時請求),但一個廣告網絡只能接受我沒有的回傳腳本標記。如何從URL創建回傳代碼?

回傳腳本需要將URL(728x90圖片或Flash橫幅)的內容加載到自身中(它還需要執行加載的Javascript)。任何人都可以幫助我構建一個回傳腳本標記嗎?

我嘗試這樣做:

<SCRIPT language="Javascript"> 

// loads within itself, in the 728x90 banner space 

document.write("<SCR"+"IPT language=\'Javascript\' src=\'http://www.mydomain.com/passback.php\'></SCR"+"IPT>"); 

</SCRIPT> 

但有腳本錯誤。有任何想法嗎?

+1

@Tom'passback.js'文件是怎麼樣的? –

+0

你得到了什麼錯誤? –

+0

你的代碼(你顯示的部分)沒問題。這是* src *屬性中指出的腳本導致的問題 - 謹慎分享它?另外,在Jan問題之後 - 你得到了哪些腳本錯誤? – WTK

回答

6

只是一個想法。如果你嘗試這個,它會給你什麼?

<SCRIPT language="JavaScript" type="text/javascript"> 

var script = document.createElement("script"); 
script.type = "text/javascript"; // This is for HTML 4.01 validation 
script.src = "http://www.mydomain.com/passback.php"; 
document.getElementsByTagName("head")[0].appendChild(script); 

</SCRIPT> 
+0

我收到腳本錯誤。 「錯誤:缺少;聲明之前」 – Tom

+2

你沒有從上面的代碼中得到錯誤,它在別處 – alessioalex

+0

我同意@alessioalex,這個錯誤很可能在你的腳本本身。嘗試在jslint之類的東西中驗證您的javascript,以嘗試找到缺少的分號和花括號。我也贊成上面的答案,因爲這是一個很好的技巧。 – BenSwayne

0

已經提供的腳本是接近一個我一直用這個:

var js = document.createElement("script"); 
js.type = "text/javascript"; 
js.src = "//www.mydomain.com/passback.php"; 
document.getElementsByTagName('head')[0].appendChild(js); 

是唯一不同的是,URL方案不因此規定,如果您是在運行http服務器,然後http url將被調用,如果你在https上運行,那麼https將被調用 - 混合它們將是你的腳本可能無法加載的原因。

由於您的腳本錯誤,我建議您使用Chrome和開發人員工具 - 這將允許您查看到底是哪一行會給出該錯誤。

+1

+1特別是沒有'http:|| https:'。爲什麼人們添加這個? – fncomp

+0

@Josh指定URL方案是從標準角度看「正確」的方式。無計劃URL實際上更多的是利用了所有瀏覽器在不確定使用什麼(最近發現)時回退到當前頁面方案這一事實。這就是說我使用和倡導無計劃的網址,但也承認標準來自哪裏。既然無計劃的URL非常流行且有用,它們可能會成爲標準。但最初的意圖是所有的URL都有一個方案。計劃列表遠遠長於http/https,並且可以在網絡外部使用網址。 – BenSwayne

+0

我知道其他的方案,但這個問題是在瀏覽器中,那麼任何人都會因爲試圖從'https'方案訪問'http'而導致錯誤? – fncomp

0

以下函數將另一個文檔加載到文檔主體中。新文檔的URL應該位於您的案例中的同一個域中,即http://www.mydomain.com/

您需要將以下腳本另存爲.js文件,並將其放在應放置廣告的位置。

function load(url) { 
    var req = null; 

    if (window.XMLHttpRequest) { 
     req = new window.XMLHttpRequest(); 
    } 
    else if (window.ActiveXObject) { //fallback 
     try { 
      req = new ActiveXObject("Msxml2.XMLHTTP"); 
     } catch (e) { 
      try { 
       req = new ActiveXObject("Microsoft.XMLHTTP"); 
      } catch (e) { } 
     } 
    } 

    if (req) { 
     req.open("GET", url, false); 
     req.send(null); 
     return req.responseText; 
    } 
} 

document.write(load("http://www.mydomain.com/passback.php"));