在 Knockout js 中动态 URL 绑定到 iframe

Posted

技术标签:

【中文标题】在 Knockout js 中动态 URL 绑定到 iframe【英文标题】:Dynamic URL binding to iframe in Knockout js 【发布时间】:2019-03-11 01:48:58 【问题描述】:

我在运行时将 src 属性绑定到 iframe 时遇到问题。

iframe data-bind="visible: $root.someBoolProp(), attr:src:$root.someProp" /iframe

当我执行 console.log($root.someProp) 时,它正在记录正确的 URL。(https://dev-payment....)

我不确定渲染视图后是否会抛出以下错误,其中 localhost url 附加到实际 iframe URL。

错误信息:

拒绝在框架中显示“http://localhost:62489/en/hoapayment/%22https://dev-payment-ui.azurewebsites.net/something%22”,因为它将“X-Frame-Options”设置为“拒绝”。

有人可以告诉我如何解决这个问题。

【问题讨论】:

会不会是someProp 持有一个没有指定协议的url?见this answer。 someProp 也包含该协议。当我执行console.log() 时,我会看到完整的 URL 以及协议。 这取决于您在哪里执行 console.log() 与您实际使用它的位置。看起来 url 被设置为相对的(您的网站 url + 来自 root.someProp 的 url)。另外,尝试 $root.someProp() 最后加上括号。 我还想在这里补充一点:当我尝试将 URL 直接传递给 iframe SRC 时,我可以看到 iframe 中的页面加载。 console.log('Payment URL: ',paymentUrl); frame.attr('src', 'https://dev-payment-ui.azurewebsites.net....'); ...但是当我将变量传递给 SRC 时,我收到了上述错误 console.log('Payment URL: ',paymentUrl); frame.attr('src', paymentUrl); 【参考方案1】:

问题在于 URL 格式。作为paymentUrl 一部分的URL 类似于""https://dev-payment...""。所以我必须删除多余的"

感谢您的回答。

【讨论】:

以上是关于在 Knockout js 中动态 URL 绑定到 iframe的主要内容,如果未能解决你的问题,请参考以下文章

用于在 url 中查找部分字符串的 Knockout.js 数据绑定

Knockout.js 将参数绑定到 Data-Target 返回对象而不是文本(手风琴)

knockout.js--基本用法

如何使用 Knockout.js 将多个 View 绑定到单个 ViewModel

Knockout JS 如何将数据绑定到静态表单元素

如何有条件地绑定到 knockout.js 中的“valueUpdate”?