Я добавил zooming="true"
внутри тега, но когда страница загружена, я не могу увеличить масштаб, чтобы увеличить или уменьшить представление. Я также установил webkitallowfullscreen mozallowfullscreen allowfullscreen
, чтобы масштабировать страницу, чтобы соответствовать экрану устройства, но ничего не изменилось, и страница все еще вырезана.
Чтобы объяснить эту концепцию немного лучше, я беру, например, собственные приложения Android
. Теперь, если вы хотите загрузить страницу из Интернета, вы используете WebView
, и результат будет точно таким же, как с помощью iframe
on Ionic
. Но на андроиде все упрощается в отношении настройки:
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);
}
Надеюсь, ты поможешь мне.
Edit
Я добавил 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
После добавления id="myframe"
внутри <iframe>
я также попытался использовать функцию 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%";
}