我们在使用html iframe广告时遇到了一些问题。 我们想做的是做一个相对简单的" HTML广告在app和浏览器中都可以正常工作(我们希望在mraid可用时使用mraid.open,如果不可用则使用window.open)。
我们当前的广告代码包含一个iframe的javascript document.write,其中包含由我们托管的html源代码。我们不控制执行javascript标记的域,也不会创建实际广告的HTML源代码(尽管我们可以对其进行修改,例如包含额外的脚本)(我们也不能对HTML施加某些类型的要求) )。
为了让我们的广告兼容,我们需要包含" mraid.js"进入广告。因为"实际广告的来源" iframe托管在我们的域上,在广告的html中包含mraid.js没有多大意义,因为这将指向我们域上的一些mraid.js版本。
这就是为什么我们必须包括" mraid.js"在我们的标签中(在iframe中执行"在另一个域" mraid.js的特定实现可能可用。这导致实际问题,"实际广告"由于跨域安全问题,iframe无法访问生成的mraid对象。
我已经搜索了一下,试图弄清楚其他人是如何处理这个问题的,我几乎找不到任何东西,这就是为什么我认为我们可能会做一些奇怪的事情。是否有其他方法来包含html横幅而不将其放在自己的iframe中?我想到了将.html文件本身写入"其他域" iframe虽然这需要我们将html中的任何相对链接更新为绝对链接(这似乎不可能100%可靠地完成)。
据我所知,不可能将mraid对象用于我们的iframe(?),这就是为什么我能想到的另一个解决方案就是制作我们自己的" mraid"允许"他们的"之间进行通信的界面iframe&m;和#34;我们的" iframe中。然而,对于我希望这是一个小问题,这似乎是一个非常大的解决方案。
如果mraid接口是可行的方法,有人可以解释如何有效地设置它吗?我当前的想法是,在我的html源代码中,我需要实现mraid.js中可用的每个方法,并且每个方法都要对父窗口执行特定的postMessage(),其中" real mraid"执行方法(如果mraid可用)并使用另一个postMessage()将任何可能的结果返回给我们的iframe。
非常感谢任何建议。