1. 程式人生 > >關於Android WebView不支援window.location.href的解決方法

關於Android WebView不支援window.location.href的解決方法

 

這個標題我不太有把握,但總之我在網上沒找到什麼好的解決方案。

也許是因為我這邊的環境問題吧:

-API 17

-紅米1S

今天再寫一個區域網環境下、基於HTTP協議的手機控制電腦關機的小程式(建議別這樣做,若沒有身份驗證則相同區域網的人都可以向你的電腦發請求),UI是擬定4個按鈕代表不同的指令,html部分程式碼如下:

<div class="row form-group">
	<button id="s" class="btn btn-danger btn-lg col-md-6" onclick="doAction(this);">
		<span class="glyphicon glyphicon-off icon"></span>
	</button>  
	<button id="l" class="btn btn-warning btn-lg col-md-6" onclick="doAction(this);">
		<span class="glyphicon glyphicon-log-out icon"></span>
	</button>
</div>

</pre><p>剛開始打算這樣寫js:</p><pre class="javascript" name="code">	function doAction(btn){
		window.location.href = url;
		return false;//防止onclick之後表單提交
	}

可是死活不跳轉,alert也不出來(後來我才知道是要重寫onJsAlert才行),我也一度懷疑是click和touch的區別,可是最後我只能覺得,它不支援這句話。

這是個重定向,或者從另一個角度理解,這是一個GET請求,一說到請求,我馬上想到XHR。於是改了程式碼如下:

	function XHR() {
		// 參考自 <a target=_blank href="http://www.cnblogs.com/gaojun/archive/2012/08/11/2633891.html">http://www.cnblogs.com/gaojun/archive/2012/08/11/2633891.html</a>
		var xhr;
		try {xhr = new XMLHttpRequest();}
		catch(e) {
			var IEXHRVers =["Msxml3.XMLHTTP","Msxml2.XMLHTTP","Microsoft.XMLHTTP"];
			for (var i=0,len=IEXHRVers.length;i< len;i++) {
				try {xhr = new ActiveXObject(IEXHRVers[i]);}
				catch(e) {continue;}
			}
		}
		return xhr;
	}
	function doAction(btn){
		var xhr = XHR();
		var url = '/ctrl/?op=' + btn.id + '&time=' + document.getElementById('time').value;
		xhr.open("get", url, true);
		xhr.send(null);
		return false;//防止onclick之後表單提交
	}

雖然有效果了,但我總覺得有些小題大做。

沒辦法= =,我總會把問題想複雜,有什麼更簡便的方法,也歡迎大家提出,共同交流,共同進步。

 

相關推薦

關於Android WebView支援window.location.href解決方法

  這個標題我不太有把握,但總之我在網上沒找到什麼好的解決方案。 也許是因為我這邊的環境問題吧: -API 17 -紅米1S 今天再寫一個區域網環境下、基於HTTP協議的手機控制電腦關機的小程式(建議別這樣做,若沒有身份驗證則相同區域網的人都可以向你的電腦發請求

關於Android WebView支援location.href開啟的解決方法 小米部分機型

遇到這個問題也純屬無奈,對於Android 【WebView】H5網頁支付,的相容性實在頭疼,其實大部分機型都能正常使用,包括跳轉至應用實現支付,可以偏偏有些機型就是特殊(畢竟Android開源,家家定製,家家不同),上線運行了一段時間,收到很多使用者的反饋,我的機型不行,其

Android WebView 支援 H5 input type="file" 解決方法

最近因為趕專案進度,因此將本來要用原生控制元件實現的介面,自己做了H5並嵌入webview中。發現點選H5中 <input type="file"/>標籤 不能開啟android資源管理器。 通過網路搜尋發現是因為 android webview 由於考慮安全原

Android Pie支援http請求的解決方案

如果,你把app的targetSdkVersion設定為了28,那就可能面臨著不能訪問http介面和網頁的問題。因為Android p預設不支援http的連線請求,和ios一樣。要解決這個問題,就需要新增一個配置。 異常為(網路請求): Exception: IOExceptio

第七代英特爾處理器安裝Windows7提示“支援的硬體”的解決方法

文章原始地址: http://feotech.com/?p=113 使用第七代英特爾處理的PC,安裝Windows7系統後執行自動更新安裝補丁。 補丁安裝完成後提示 “不支援的硬體 你的電腦使用的處理器專為最新版Windows而設計。由於你當前使用的Windows版本不支援該處理器,

遠端計算機需要網路級別身份驗證,而您的計算機支援該驗證的解決方法

故障:"遠端計算機需要網路級別身份驗證,而您的計算機不支援該驗證,請聯絡您的系統管理員或者技術人員來獲得幫助" 故障症狀:當您使用Windows XP"遠端桌面連線"工具去連線Windows Vistas或Windows Server 2008的遠端桌面、終端服務時,出現上述故障。 故障產生環境:遠端桌面

BeanNameAutoProxyCreator 支援annotation的問題解決方法討論

有人SpringSource的BBS上提出了問題,但沒有人解決http://forum.springsource.org/showthread.php?t=70355spring事務配置 <!-- 事務配置 --> <bean id="transaction

Cuda5.5支援C++11的解決方法

    最近在做的專案中既用到了Cuda,同時又用到了C++11的一些新的特性,在用gcc編譯的時候會出現錯誤。     錯誤提示為: /usr/include/c++/4.6/x86_64-linux-gnu/./bits/c++config.h(159): error

vs2010無法開啟專案檔案,此安裝支援該專案型別解決方法

今天在用vs2010開啟一個之前做的Web專案時提示:無法開啟專案檔案,此安裝不支援該專案型別解決方法網上查了很多資料,都是說:原因是vs2010需要把mvc升到3,預設的vs2010的mvc是2。vs2010 mvc 3 下載地址:http://www.microsoft.

android出軟鍵盤的解決方法

今天遇到在EditText點選的時候彈不出軟鍵盤,讓他獲得焦點啥的都沒效果 後來google+baidu終於解決了,我用的是getSystemService得到的WindowManager ,然後在這個WindowManager 里加的EditText,改為將EditTex

Python2支援中文的問題解決方法

  1.建立*.py程式   2.執行python程式       1)python 檔名(用Python2版本執行)       2)python3 檔名 (用Python3版本執行) PS:由上圖可知,Python2不支援中文,解決方法接著往下看   3

使用Androidwebview將web app打包成安卓的app和解決安卓webview支援input type=file問題

使用Android的webview將web app打包成安卓的app和解決安卓webview不支援input type=file問題 在MainActivity.java中編碼 public class MainActivity extends Activity { privat

window.location.href 在IE跳轉的解決方法

         window.location.href = 'NavigationRole.aspx?RoleId=' + node.Id; 在Js程式碼加入下面兩句,IE7加第一句就行,但IE11必須加兩句。         window.event.return

webview.shouldOverrideUrlLoading會接收window.location.href重定向

s 對於window.location.href重定向,客戶端無法獲取點選事件,所以不會主動加上url後面的引數。 建議用“模擬點選事件”的方式替代所有的“window.location.href”。 我已測過的html檔案,見附件 <html><head

springMVC框架在js中使用window.location.href請求url時IE相容問題解決

是使用springMVC框架時,有時候需要在js中使用window.location.href來請求url,比如下面的路徑:window.location.href = ‘forecast/download.do’在谷歌瀏覽器下,實際請求的路徑是:專案名/forecast/d

微信BUG之微信內置的瀏覽器中window.location.href 跳轉

href details clas pan 模擬 dom sdn times word 最近做微信開發遇到這個問題,查了一些文檔,總結一下 1.url後面加參數 indow.location.href = url +‘?timestamp=‘+ new Date().get

Android 5.0及以上WebView能使用第三方Cookies解決方案

最近在做老專案SDK的升級,突然發現以前能用的功能,現在不能使用了。除錯的時候發現返回了錯誤401.需要認證。奇怪以前都是正常的。所以就去看看webView是否有過變動 解決方法 if (Build.VERSION.SDK_INT >= Build.VERSION_CODE

window.location.href火狐相容性問題

當採用window.location.href("web/login.jsp")跳轉頁面的時候IE是成功的,但是用再火狐上面,這種跳轉方式是不會器任何作用。 其實想要相容火狐很簡單,只要改變一下他的

Android Webview完美支援播放各種視訊。(解決無法播放優酷視訊的問題以及週末無法播放優酷視訊的問題)

通常我們會有這樣的業務需求:手機端展示某個H5頁面,H5頁面來源可能是優酷、56、愛奇藝等某個視訊網站的一個視訊。使用者可以直接操作觀看。很簡單。但是很容易出現問題。比如屬性沒有處理好。會出現可以載入56、愛奇藝視訊都沒有問題  但是無法載入優酷視訊的bug。網上介紹的解決

window.location.href無法跳轉的解決辦法(整理)

 必須在event() 後新增 return false; 在跳轉函式event()內新增return false不行。  注意:如果是通過ajax返回值進行是否跳轉,在ajax請求是新增一個隨機引數。 我的解決程式碼:  <!--必須加上return fasle否則跳轉不了-->