2016-07-13 25 views
0

我想創建一個廣告,它會拋出一個燈箱,但廣告本身將放置在iframe中和/或注入網站(不是相同的域)。有些網站會將它放在一個iframe中,有些網站就是這樣。我無法控制要放置廣告的網站。插頁式廣告(異步廣告)沒有在網站上放置任何代碼

我知道我可以使用postMessage()從iframe中發送數據,並在收到的數據的父窗口上執行命令,但我無法在父窗口上放置任何代碼。有沒有一種適用於兩種場景的通用解決方案?我想推送一些內容到父窗口。

此代碼不正是我要問,但我不知道它是怎麼做的吧:

<script src="http://bs.serving-sys.com/BurstingPipe/adServer.bs?cn=rsb&c=28&pli=17085731&PluID=0&w=1&h=1&ord=[timestamp]&ucm=true&ncu=$$%c$$"></script> 
<noscript> 
<a href="%chttp%3A//bs.serving-sys.com/BurstingPipe/adServer.bs%3Fcn%3Dbrd%26FlightID%3D17085731%26Page%3D%26PluID%3D0%26Pos%3D67849382" target="_blank"><img src="%%VIEW_URL_ESC%%.http://bs.serving-sys.com/BurstingPipe/adServer.bs?cn=bsr&FlightID=17085731&Page=&PluID=0&Pos=67849382" border=0 width=1 height=1></a> 
</noscript> 

回答

2

如果代碼是一個框架/ iframe中,你沒有訪問父框架/窗口和父框架/窗口沒有通過postMessage()加載彈出/燈箱API設置,那麼答案是否定的。

唯一可以做到這一點的是,當使用友好的iFrame(與父框架/窗口相同的域)或完成解決方法以允許訪問父框架/窗口時。請注意,即使這樣做,並且您訪問並更改父級,您可能會憤怒發佈者或網站所有者,如果他們不期望您嘗試添加的內容或者您有意或無意更改其網站或樣式表以任何方式或注入可能是惡意的腳本。如果您反覆這樣做,您可能也會被任何通過您的廣告發送的網絡取締。

如果使用SafeFrame,您將無法做到這一點。 SafeFrame旨在防止廣告客戶改變頂級窗口/框架,如果它是可擴展的廣告類型但SafeFrame API中沒有彈出窗口,則它會提供API以展開廣告。

如果你想測試,如果你有訪問父/頂框/窗口,你可以嘗試:

對於頂部框架/窗口:

try { window.top.location.href } catch(e) { 
    // Exception was thrown meaning you do not have access to the top window/frame! 
} 

父(可能不是頂-most)frame/window:

try { window.parent.location.href } catch(e) { 
    // Exception was thrown meaning you do not have access to the parent window/frame! 
}