Мне нужно передать переменную javascript в iOS UIWebView, я очень легко сделал то же самое с Android, но здесь не смог.
Что мне нужно, так это то, что я нажму на ссылку в веб-представлении, и эта ссылка, в свою очередь, вызовет эту функцию JS buttonClickPAss
с некоторыми параметрами, и я хочу, чтобы все параметры, которые я передал на веб-сайте нативномубыстрый код.Не только для вызова этой функции JS и возврата ее значения в swift.
Я добавлю весь HTML-код ниже
<html>
<head>
<script type="text/javascript">
function buttonClickPAss(a,b,c)
{
// console.log(action);
return a;// return what i passed to the function that is valueA
}
</script>
</head>
<body>
<b><a href='#' onclick="buttonClickPAss('valueA','valueB','valueC');"> Click here from webview</a></b>
</body>
</html>
, это 'valueA', 'valueB' и 'valueC'Заполняется при загрузке html-страницы. Мне нужны эти значения в моем быстром коде
. Затем я загружу вышеупомянутую html-страницу в веб-просмотр и щелкну по ссылке из веб-просмотра, чтобы вызвать функцию JS, потому что мои значениязаполняются на веб-странице.
это учебник, который я пробовал в Android
https://capdroidandroid.wordpress.com/2015/07/03/how-send-data-from-javascript-to-native-android-app/
, но когда я искал то же самое в ios, я нашел этот учебник
<script type="text/javascript">
function buttonClickPAss()
{
// console.log(action);
return 'hi from js';
}
</script>
выше мой код js
в native swift Я дал этот код после загрузки URL
func webView(_ webView: UIWebView, shouldStartLoadWithRequest request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
let url = request.url!
let result = webView.stringByEvaluatingJavaScript(from: "buttonClickPAss()")
print("Result = ",result!)
return true
}
вышеупомянутый код работает нормально, когда я нажал нассылка, которая вызывает эту функцию js, я получил журнал в моем xcode как 'привет от js'
, но мне нужно передать значение в функцию buttonClickPAss
, поэтому я изменил вышеуказанные коды на этот
в JS
<script type="text/javascript">
function buttonClickPAss(a,b,c)
{
// console.log(action);
return a;// return what i passed to the function
}
</script>
и в быстрой стороне icповесил приведенный выше код swift на этот
func webView(_ webView: UIWebView, shouldStartLoadWithRequest request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
let url = request.url!
let result = webView.stringByEvaluatingJavaScript(from: "buttonClickPAss(a,b,c)")
print("Result = ",result!)
return true
}
, но здесь "Результат" ничего не печатает,
Я искал другие учебники, также везде, где они имеют дело с функциями с пустыми параметрами, может кто-нибудьПомогите мне, пожалуйста,
Еще одна заметка, согласно вышеприведенному руководству по Android, я мог бы передавать переменные js отдельно в три переменные в Android, существует ли подобный механизм в ios swift?в худшем случае я сделаю строку json и верну ее в виде одной строки
Пожалуйста, помогите
спасибо