【发布时间】:2017-06-14 01:58:40
【问题描述】:
我在标签内添加了zooming="true",但是当页面加载时,我无法缩放以增加或减少视图。我还设置了webkitallowfullscreen mozallowfullscreen allowfullscreen 来缩放页面以适应设备屏幕,但没有任何改变,页面仍然被剪切。
为了更好地解释这个概念,我以Android 原生应用为例。现在,如果您想从 Web 加载页面,请使用 WebView,结果与在 Ionic 上使用 iframe 完全相同。但是在 android 上,关于定制的事情变得更简单了:
webview.getSettings().setBuiltInZoomControls(true);
启用捏拉缩放,以及
webview.getSettings().setUseWideViewPort(true);
根据(移动)屏幕的大小调整和缩放网页。
现在,使用Windows 10 我无法构建native iOS apps,所以我必须依赖cross-platform development。
这是我的detail-page:
html:
<ion-content>
<iframe sandbox class="link" frameborder="0" [src]="webPage()" zooming="true" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
</ion-content>
scss:
detail-page {
.scroll-content{
padding: 0px ;
}
::-webkit-scrollbar,
*::-webkit-scrollbar {
display: none;
}
iframe.link {
width: 100%;
height: 100%;
max-width: 100%;
max-height: 100%;
}
}
ts:
webPage() {
return this.sanitizer.bypassSecurityTrustResourceUrl(this.entry.getElementsByTagName('link')[0].textContent);
}
希望你能帮助我。
编辑
我添加了 document.getElementsByTagName('iframe').contentWindow.document.body.style = 'zoom:50%';,但我收到 Typescript 错误:
Typescript Error
Property 'contentWindow' does not exist on type 'NodeListOf<HTMLIFrameElement>'.
这是我的整个.ts 文件:
export class DetailPage {
entry:any = [];
constructor(private sanitizer: DomSanitizer, public nav: NavController, navParams:NavParams) {
console.log('run');
this.nav = nav;
this.entry = navParams.get('selectedEntry');
console.log('My entry is: "'+ this.entry.getElementsByTagName('title')[0].textContent + '"');
document.getElementsByTagName('iframe').contentWindow.document.body.style = 'zoom:50%';
}
webPage() {
return this.sanitizer.bypassSecurityTrustResourceUrl(this.entry.getElementsByTagName('link')[0].textContent);
}
}
编辑 2
在<iframe> 中添加id="myframe" 后,我也尝试了ngAfterViewInit() 函数,但那里仍然没有变化。
ngAfterViewInit() {
var x = document.getElementById("myframe");
var y = (<HTMLIFrameElement> x).contentWindow.document;
y.body.style.zoom = "50%";
}
还有这种形式:
ngAfterViewInit() {
var iframe:HTMLIFrameElement = <HTMLIFrameElement>document.getElementById('myframe');
var iWindow = (<HTMLIFrameElement>iframe).contentWindow.document;
iWindow.body.style.zoom = "50%";
}
【问题讨论】:
-
你认为这种行为只是离子还是因为iframe本身,你可以创建一个更简单的应用程序来看看问题的根源是什么。此外,如果您分享它,它可能对找到解决方案更有帮助。
-
不知道是Ionic的限制还是iframe本身的限制。我也尝试过使用其他网址,但页面还是被剪掉了
标签: html angular iframe ionic2