我有代码加载本地html文件(html文件在应用程序内部,而不是从服务器),但我如何去添加查询字符串。我基本上想把数据从swift传递到html webview。这甚至可能吗?我发现的很多例子都与来自服务器的html文件有关,但是没有找到存储在应用程序中的html文件。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/productName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="5dp"
/>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:weightSum="3"
android:paddingBottom="5dp"
>
<TextView
android:id="@+id/mrp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="5dp"
android:layout_weight="1"
/>
<TextView
android:id="@+id/sellPrice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="5dp"
android:layout_weight="1"
/>
<TextView
android:id="@+id/quantity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="5dp"
android:layout_weight="1"
/>
</LinearLayout>
</LinearLayout>
答案 0 :(得分:1)
是的,你可以使用Javascript来做到这一点。查看stringByEvaluatingJavaScriptFromString
答案 1 :(得分:1)
如果您有一个包含查询的完整URL字符串,则只需使用该字符串初始化NSURL。
let url = NSURL(string: "www.stackoverflow.com")
答案 2 :(得分:1)
您可以使用NSURLComponents
和NSURLQueryItem
构建包含查询参数的网址:
var urlComponents = NSURLComponents(string: "www/index.html")!
urlComponents.queryItems = [
NSURLQueryItem(name: "key1", value: "value1"),
NSURLQueryItem(name: "key2", value: "value2")
]
urlComponents.URL // returns www/index.html?key1=value1&key2=value2
答案 3 :(得分:1)
我通过使用pathForResource而不是pathForResource来解决这个问题,因为我能够在最后添加字符串。
var url = NSBundle.mainBundle()。pathForResource(&#34; index&#34;,ofType:&#34; html&#34;,inDirectory:&#34; www&#34;)。stringByAppendingString(&# 34; OS = IOS&#34)
答案 4 :(得分:1)
要将查询字符串参数添加到WebView的本地URL,您可以使用以下代码。它适用于Xcode 9和Swift 4。
let bundleMainUrl = Bundle.main.url(forResource: "index", withExtension: "html", subdirectory: "www");
let fullUrl = URL(string: "?os=ios", relativeTo: bundleMainUrl);
let request = URLRequest(url: fullUrl!);
webView?.load(request);