所以我使用角度材料和angular4,我在一个MdDialogue组件中放了一个html for booking.com表格。当有人按下按钮时,我希望这个对话框弹出窗体内部的形式。应用程序加载后,它会按预期工作一次,但不会再次。我希望每次都能工作。没有错误消息,因此我不清楚为什么会发生这种情况。 booking()中的逻辑初始化表单。
booking.com表单的html如下所示。
<ins class="bookingaff" data-aid="1179852" data-target_aid="1179846" data-prod="nsb" data-width="100%" data-height="auto">
<!-- Anything inside will go away once widget is loaded. -->
<a href="//www.booking.com?aid=1179846">Booking.com</a>
</ins>
这就是booking.com组件的样子......
...
openBookings(){
let dialogRef = this.dialog.open(Booking_com);
dialogRef.afterClosed().subscribe(result => {
});
}
debug(data){
console.log(data);
}
}
@Component({
selector: 'Booking_com',
templateUrl: 'Booking_com.html',
styleUrls: ['Booking_com.sass']
})
export class Booking_com implements AfterViewInit{
ngAfterViewInit(): void {
this.booking();
}
constructor(public dialogRef: MdDialogRef<Booking_com>) {}
booking(){
(function(d, sc, u) {
var s:any = d.createElement(sc);
var p:any = d.getElementsByTagName(sc)[0];
s.type = 'text/javascript';
s.async = true;
s.src = u + '?v=' + (+new Date());
p.parentNode.insertBefore(s,p);
})(document, 'script', '//aff.bstatic.com/static/affiliate_base/js/flexiproduct.js');
}
}
图像显示它第一次运行但不是第二次运行....任何想法为什么会发生这种情况以及如何解决这个问题都会很棒。
答案 0 :(得分:7)
检查affiliate script我们可以看到,加载此脚本时,它会调用一次BookingAff.run()
函数,如下所示:
function u() {
if (_i_("5fc:14"), u.already_ran) return _r_();
u.already_ran = !0;
如果已设置already_ran
标志,则退出。所以我们需要在每个模态打开时取消它:
// reset already_ran flag
if (window.BookingAff && window.BookingAff.run.already_ran) {
window.BookingAff.run.already_ran = false;
}
由于这两个原因,预订表格仅在第一个模态开放时呈现一次。
还有 origin 检查,只允许 booking.com 或 bstatic.com 来源:
var r, i = new RegExp("(booking|bstatic).com$");
if (!e.origin.match(i)) return _r_();
所以我们不能在我们域名中打开的每个模态上运行BookingAff.run()
。
最简单的解决方案是在每个模态打开时调用booking()
函数(当然,在重置already_ran
标志后)。
plunker:https://plnkr.co/edit/IlAa7XJDjQIxd6IgKXIe?p=preview
我的plunker中有一个JS错误说
ERROR错误:选择器&#34; dialog-overview-example-dialog&#34;与任何元素都不匹配
来自最初的Google https://material.angular.io/components/component/dialog示例及其附带链接