[ALOY-1697] Add WebView "onlink" callback support
GitHub Issue | n/a |
---|---|
Type | Improvement |
Priority | Medium |
Status | Closed |
Resolution | Fixed |
Resolution Date | 2019-08-16T18:32:17.000+0000 |
Affected Version/s | n/a |
Fix Version/s | CLI Release 7.1.1, Alloy 1.14.1 |
Components | XML |
Labels | WebView, callback, link |
Reporter | Gary Mathews |
Assignee | Ewan Harris |
Created | 2019-07-11T23:54:48.000+0000 |
Updated | 2019-08-20T21:41:20.000+0000 |
Description
*Summary:*
We should add
Ti.UI.WebView
"onlink" callback support in view XML to make it more convenient to use. Currently, Alloy users are limited to assigning the callback in their JavaScript code instead.
https://docs.appcelerator.com/platform/latest/#!/api/Titanium.UI.WebView-property-onlink
*Example:*
index.xml
<Alloy>
<Window class="container">
<WebView id="webView" onlink="onLinkHandler"/>
</Window>
</Alloy>
index.js
var htmlText =
'<!DOCTYPE html>\n' +
'<html>\n' +
' <head>\n' +
' <meta name="viewport" content="width=device-width, initial-scale=1.0">\n' +
' </head>\n' +
' <body>\n' +
' <p>WebView "onlink" Test</p>\n' +
' <br/>\n' +
' <br/>\n' +
' <a href="mylink://show/alert">Show Alert</a>\n' +
' </body>\n' +
'</html>\n';
function onLinkHandler(e) {
if (e.url === "mylink://show/alert") {
alert("The 'onLinkHandler' callback was invoked.");
return false;
}
return true;
};
$.webView.html = htmlText;
$.index.open();
*Note:*
Currently, doing the above causes the "onlink" property to be assigned a string literal of the callback function like the below, which is invalid.
$.webView.onlink = 'onLinkHandler';
PR: https://github.com/appcelerator/alloy/pull/936
Verified the fix on CLI 7.1.1-master.5.web view onlink callback support added. Works as expected. Test Environment: Name = Mac OS X Version = 10.14.5 Architecture = 64bit Node.js Node.js Version = 10.16.2 npm Version = 6.9.0 Titanium CLI CLI Version = 5.2.1 Titanium SDK SDK Version = 8.1.1.v20190813101121 CLI = 7.1.1-MASTER.5 Studio -5.1.3.201907112159 appc npm -4.2.15-1 device -iPhone X iOS 11,oneplus 5t Android 9 Simulator/Emulator -iphone6 ios12,pixel android 8