我有一个MVC应用程序,可将视频内容包(来自外部第三方供应商)加载到iFrame中。通常情况下,当您致电此第三方以检索内容时,会向其传递一个ReturnURL参数,该参数告诉供应商的播放器在视频内容模块完成后将重定向到何处。不幸的是,某些新的更新程序包不支持重定向。内容模块完成后,它没有重定向到指定的重定向URL,而只是将iFrame重定向到一个名为“ goodbye.htm”的页面(该页面仍与第三方供应商位于同一域中)。
根据建议,供应商建议我们在iFrame上安装一个侦听器,以检测iFrame src何时更改为此“ goodbye.htm”页面,然后执行我们需要重定向的代码。
我们遇到的问题之一是在iFrame更改后获取iFrame的src。显然,即使从iFrame更改了src属性,它也只会返回原始的src。当然,另一个问题是,goodbye.htm页面的域与我们的应用程序和父窗口的域不同,因此它违反了“同源策略”。
下面是我们用来尝试重定向的JQuery函数。
$('.js__iframe-play').on('load', function () {
var src = $(this).attr("src");
if (src.includes("goodbye.htm")) {
const url = "/Learn/GetResults/" + $(this).data("class-id") + "?regid=" + $(this).data("registration-id");
console.log(url);
const newiframe = $(this).clone();
newiframe.attr("src", url);
$(this).after(newiframe);
$(this).remove();
}
})
有人对我们如何实现目标有任何想法吗?