Titanium currently documents that the WebView.setHtml() method supports a 2nd argument on Android and iOS which can provide a "baseURL" setting. Android used to support this, but it was inadvertently removed in Titanium 6.0.3. This feature should be re-added since it's needed by "iframes" to indicate which URL an iframe's embedded paths are relative to.
For example, a YouTube video embedded within an iframe will not play on Android or iOS unless a "baseURL" of "https://www.youtube.com" is provided.
Steps to reproduce:
- Build and run the below code on Android.
- Tap on the video to attempt to play it.
- Notice that the video won't play. Instead it reads "Video Unavailable".
- Build and run on iOS.
- Tap on the video play it.
- Notice that the video plays fine. (This is because the "baseURL" is being used.)
The "baseURL" is not needed if the webpage was loaded from the Internet (ie: the "url" property). That is, "baseURL" is only applicable when loading HTML from string. So, hosting the webpage on your own web server will work-around this problem.