Titanium WebViewの挙動がよくわからない件
わからないのは、html
とurl
プロパティ、同時に指定した時にどちらが優先されるか?
ということ。
TitaniumのWebViewのプロパティには、html
というプロパティとurl
というプロパティがあります。
プロパティ | 効用 |
---|---|
html |
HTMLソースを与えると、レンダリングして表示する |
url |
HTMLファイルのパスを与えると、ロードして表示する |
そしてTitanium.UI
以下のクラスは、createHogeHoge()
というメソッドを通してインスタンス化することになっており、
その際、引数に渡したオブジェクトでインスタンスのプロパティを初期化することができるようになっています。
var webView = Ti.UI.createWebView({
url: "http://www.google.com"
});
html
とurl
、優先されるのはどっち?
さて、インスタンス化時にhtml
とurl
を同時に指定するとどうなるのか?
以下のコードで実験。
var webView = Ti.UI.createWebView({
html: '<html><head><title>hoge</title></head><body>mogemoge</body></html>',
url: "http://www.google.com"
});
html
の方が優先されるようです。
両方指定した時、url
はsetHtml()
のbaseURL
の代わりになったりするの?
WebView#setHtml
というメソッドがあります。
こいつは第二引数にbaseURL
というオプションを渡すと、相対パスの解決に使われるURLを指定できます。
webView.setHtml(
'<html><head><title>hoge</title></head><body><a href="/keyword/hoge">mogemoge</a></body></html>', {
baseURL: "http://d.hatena.ne.jp/"
});
html
とurl
の両方を指定した時、url
はbaseURL
の代わりになるのでしょうか?
以下のコードで実験。
var webView = Ti.UI.createWebView({
html: '<html><head><title>hoge</title></head><body><a href="/keyword/hoge">mogemoge</a></body></html>',
url: "http://d.hatena.ne.jp/"
});
リンクをタップした結果
[DEBUG] Loading: /keyword/hoge, Resource: keyword/hoge
[ERROR] Error loading /keyword/hoge
[ERROR] Error loading: file:///keyword/hoge, Error: Error Domain=NSURLErrorDomain Code=-1008 "resource unavailable" UserInfo=0xd48d940 {NSErrorFailingURLKey=file:///keyword/hoge, NSErrorFailingURLStringKey=file:///keyword/hoge, NSLocalizedDescription=resource unavailable}
代わりにはなりませんでした。
結論
-
url
よりhtml
の方が優先される
-
url
はbaseURL
の代わりにはならない
url
よりhtml
の方が優先されるurl
はbaseURL
の代わりにはならないAuthor And Source
この問題について(Titanium WebViewの挙動がよくわからない件), 我々は、より多くの情報をここで見つけました https://qiita.com/kikuchy/items/c9c65b74be534983ca95著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .