質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Onsen UI

HTML5で記述されたモバイルアプリの高速化、およびネイティブアプリライクなUIが作れるフレームワーク。 様々なJavaScriptフレームワークと併せて使用することができます。スマートフォン向けアプリ、Webサイトに必要なアニメーション、UI/UXを実装することが可能になります。

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

2回答

786閲覧

Onsen UI でiframeでwebページを表示するとiosで正しくwidthが適用されない

mikan3rd

総合スコア220

Onsen UI

HTML5で記述されたモバイルアプリの高速化、およびネイティブアプリライクなUIが作れるフレームワーク。 様々なJavaScriptフレームワークと併せて使用することができます。スマートフォン向けアプリ、Webサイトに必要なアニメーション、UI/UXを実装することが可能になります。

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2018/06/07 03:05

編集2018/06/07 03:06

前提・実現したいこと

  • onsen-uiでwebページを表示したい

発生している問題・エラーメッセージ

  • iframeでwebページを表示すると、おそらくiosでのみwidth: 100%が効かなく、横スクロールが発生してしまう
  • 同じ現象が発生しているもの => [【Monaca】Onsen UIの画面内に外部Webページを表示する

](http://hatopp.wpblog.jp/archives/1297)

  • chromeのディベロッパーツール上で横にはみ出さずに表示される
理想実際
イメージ説明イメージ説明

該当のソースコード

js

1import React from 'react'; 2import {Page, Toolbar,BackButton} from 'react-onsenui'; 3 4 5class Browser extends React.Component { 6 7 renderToolbar = () => { 8 return ( 9 <Toolbar> 10 <div className='left'> 11 <BackButton>戻る</BackButton> 12 </div> 13 </Toolbar> 14 ); 15 } 16 17 render () { 18 19 return ( 20 <Page renderToolbar={this.renderToolbar}> 21 <div className="c-browser__iframe__wrapper"> 22 <iframe 23 className="c-browser__iframe" 24 src="https://www.hotpepper.jp/strJ000063796/" 25 /> 26 </div> 27 </Page> 28 ); 29 } 30} 31 32export default Browser

css

1 2.c-browser__iframe { 3 display: block; 4 width: 100%; 5 height: 100%; 6 border: none; 7} 8 9.c-browser__iframe__wrapper { 10 display: inline-block; 11 height: 100%; 12 width: 100%; 13 overflow: auto; 14} 15

試したこと

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

js

1import React from 'react'; 2import ons from 'onsenui'; 3import {Page, Toolbar,BackButton, } from 'react-onsenui'; 4 5 6class Browser extends React.Component { 7 8 constructor(props) { 9 super(props); 10 11 const isIOS = ons.platform.isIOS(); 12 13 this.state = { 14 width: window.innerWidth, 15 height: isIOS ? '' : '100%', 16 scrolling: isIOS ? 'no' : 'yes', 17 } 18 } 19 20 renderToolbar = () => { 21 return ( 22 <Toolbar> 23 <div className='left'> 24 <BackButton>戻る</BackButton> 25 </div> 26 </Toolbar> 27 ); 28 } 29 30 render () { 31 32 const { 33 width, 34 height, 35 scrolling, 36 } = this.state; 37 38 return ( 39 <Page renderToolbar={this.renderToolbar}> 40 <iframe 41 id="browser-iframe" 42 className="c-browser__iframe" 43 src="https://www.hotpepper.jp/strJ000063796/" 44 width={width} 45 height={height} 46 scrolling={scrolling} 47 /> 48 </Page> 49 ); 50 } 51} 52 53export default Browser

投稿2018/06/08 10:20

mikan3rd

総合スコア220

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

私も同じ内容で困っていました。AngularJSを使用していましたので違いはありますが。
参考

JS側でデバイスの画面の幅を取得し、それをiframeの横幅に当てはめることで解決しましたがいかがでしょうか。
reactでウィンドウサイズの取得
iosの場合は横幅だけでよいのですが、androidの場合は縦幅も決めないと表示がうまくいきませんでした。

投稿2018/06/07 05:56

編集2018/06/07 06:06
bi_tsu

総合スコア35

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mikan3rd

2018/06/08 01:23

回答ありがとうございます iframeのwrapperの方にサイズを指定することでiframeの大きさは制御できました。 しかし、iframeで表示しているwebページは理想の画像のようにレスポンシブ対応してくれませんでした。 これはwebページの方の問題なのでしょうか・・・?
bi_tsu

2018/06/08 01:49

「Onsen UI V2 Angular 1 Tabbar」のテンプレートではありますが、 記載されているURL: https://www.hotpepper.jp/strJ000063796/ に書き換えたところ、理想の画像のようにレスポンシブ対応ができた状態で表示することができました。 webページに問題はないかと思います。
mikan3rd

2018/06/08 10:22

すみません、Chromeのディベロッパーツールでは正しく表示されなかったのですが、実機では正常に表示されました!ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問