Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在iframed广告中使用mraid.js_Javascript_Html_Iframe_Mraid - Fatal编程技术网

Javascript 在iframed广告中使用mraid.js

Javascript 在iframed广告中使用mraid.js,javascript,html,iframe,mraid,Javascript,Html,Iframe,Mraid,我们在使html iframe ads mraid兼容时遇到一些问题。 我们想做的是使一个“相对简单”的HTML广告在应用程序和浏览器中都能正常工作(我们希望在mraid可用时使用mraid.open,如果不可用,则使用window.open) 我们当前的广告标签由一个javascript文档组成。使用我们托管的html源编写一个iframe。我们不控制执行javascript标记的域,也不创建实际广告的HTML源(尽管我们可以对其进行修改,比如包括额外的脚本)(我们也不能对HTML施加某种类型

我们在使html iframe ads mraid兼容时遇到一些问题。 我们想做的是使一个“相对简单”的HTML广告在应用程序和浏览器中都能正常工作(我们希望在mraid可用时使用mraid.open,如果不可用,则使用window.open)

我们当前的广告标签由一个javascript文档组成。使用我们托管的html源编写一个iframe。我们不控制执行javascript标记的域,也不创建实际广告的HTML源(尽管我们可以对其进行修改,比如包括额外的脚本)(我们也不能对HTML施加某种类型的要求)

为了使我们的广告mraid兼容,我们需要在广告中包含“mraid.js”。因为“实际广告”iframe的源托管在我们的域中,所以在广告的html中包含mraid.js没有多大意义,因为这将指向我们域中的某个mraid.js版本

这就是为什么我们必须在标记中包含“mraid.js”(该标记在“其他域”上的iframe中执行,其中可能有mraid.js的特定实现。这导致了实际问题,“实际ad”iframe由于跨域安全问题而无法到达生成的mraid对象

我在谷歌上搜索了很多次,试图找出其他人是如何处理这个问题的,但我几乎什么也没发现,这就是为什么我认为我们可能在做一些奇怪的事情。有没有其他方法可以在不将html横幅放在自己的iframe中的情况下包含它?我想到了document。将html文件本身写入“其他域”iframe,尽管这需要我们将html中的任何相对链接更新为绝对链接(这似乎不可能100%可靠地完成)

据我所知,不可能将mraid对象提供给我们的iframe(?),这就是为什么我能想到的另一个解决方案是制作我们自己的“mraid”接口,允许“他们的”iframe的mraid和“我们的”iframe之间进行通信“iframe。不过,这似乎是一个相当大的解决方案,我希望这将是一个小问题

如果要使用mraid接口,有人能解释一下如何有效地设置它吗?我目前的想法是,在我的html源代码中,我需要实现mraid.js中可用的每个方法,并为每个方法对执行“真正的mraid”方法的父窗口执行特定的postMessage()并使用另一个postMessage()将所有可能的结果返回到iframe

如有任何建议,将不胜感激