Difference between revisions of "Titanium webview"
From John Freier
| Line 15: | Line 15: | ||
var webViewBeforeLoad = function(e) { | var webViewBeforeLoad = function(e) { | ||
| − | var containsFile = | + | var containsFile = URLContainsFilePrefix(); |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
// Parse URLs from the news feed that don't contain 'http://' | // Parse URLs from the news feed that don't contain 'http://' | ||
| Line 25: | Line 21: | ||
e.url = "http://" + e.url.substring(e.url.indexOf("www"), e.url.length); | e.url = "http://" + e.url.substring(e.url.indexOf("www"), e.url.length); | ||
| − | containsFile = | + | containsFile = URLContainsFilePrefix(e.url || ''); |
// Need for Android. On Android the initial load of a WebView attempt is 'file://' | // Need for Android. On Android the initial load of a WebView attempt is 'file://' | ||
| Line 43: | Line 39: | ||
} | } | ||
| − | var containsFile = | + | var containsFile = URLContainsFilePrefix(e.url || ''); |
// Parse URLs from the news feed that don't contain 'http://' | // Parse URLs from the news feed that don't contain 'http://' | ||
| Line 49: | Line 45: | ||
e.url = "http://" + e.url.substring(e.url.indexOf("www"), e.url.length); | e.url = "http://" + e.url.substring(e.url.indexOf("www"), e.url.length); | ||
| − | containsFile = | + | containsFile = URLContainsFilePrefix(e.url || ''); |
// Need for Android. On Android the initial load of a WebView attempt is 'file://' | // Need for Android. On Android the initial load of a WebView attempt is 'file://' | ||
| Line 55: | Line 51: | ||
if (!containsFile && $.alertsTitle.canGoBack() && !Alloy.Globals.IsMobileWeb) | if (!containsFile && $.alertsTitle.canGoBack() && !Alloy.Globals.IsMobileWeb) | ||
$.alertsTitle.goBack(); | $.alertsTitle.goBack(); | ||
| + | }; | ||
| + | |||
| + | function URLContainsFilePrefix(url) { | ||
| + | var match = url.match(/^file:\/\//); | ||
| + | if (match && typeof match.index != undefined) { | ||
| + | return true; | ||
| + | } | ||
| + | return false; | ||
}; | }; | ||
Revision as of 15:45, 9 January 2014
Setting the height
IOS
For IOS setting the height of a WebView can be tough. A good trick is to get the height of the HTML document and setting the WebView height.
var actualHeight = e.source.evalJS("document.body.offsetHeight");
e.source.height = actualHeight;
Clickable Links
This is to override the links inside a WebView.
var webViewBeforeLoad = function(e) {
var containsFile = URLContainsFilePrefix();
// Parse URLs from the news feed that don't contain 'http://' if (containsFile && e.url.indexOf("www")>0) e.url = "http://" + e.url.substring(e.url.indexOf("www"), e.url.length); containsFile = URLContainsFilePrefix(e.url || ); // Need for Android. On Android the initial load of a WebView attempt is 'file://' if (Alloy.Globals.IsMobileWeb || containsFile) return; Ti.Platform.openURL(e.url); $.alertsTitle.stopLoading(); }; // Load event for a WebView for outside links. function webViewLoad(e) { if (Alloy.Globals.IsIPhone) { var actualHeight = e.source.evalJS("document.body.offsetHeight"); e.source.height = actualHeight; } var containsFile = URLContainsFilePrefix(e.url || ); // Parse URLs from the news feed that don't contain 'http://' if (containsFile && e.url.indexOf("www")>0) e.url = "http://" + e.url.substring(e.url.indexOf("www"), e.url.length); containsFile = URLContainsFilePrefix(e.url || ); // Need for Android. On Android the initial load of a WebView attempt is 'file://' // Check if the WebView can go back if loaded from an outside link. if (!containsFile && $.alertsTitle.canGoBack() && !Alloy.Globals.IsMobileWeb) $.alertsTitle.goBack(); };
function URLContainsFilePrefix(url) {
var match = url.match(/^file:\/\//);
if (match && typeof match.index != undefined) {
return true;
}
return false;
};