⑴ 如何在iOS和Android上選擇一個javaScript 引擎進行應用開發
參考如下內容:
主要有兩種方法。一種是使用系統的瀏覽器組件(IOS中的和Android中的WebView),另一方法就是使用整合好的JavaScript引擎。
使用系統的瀏覽器組件比較容易實現但是更復雜,效率也低。 WebView提供了 addJavascriptInterface 把Java classes注入到JavaScript文本的方法。但是它只支持最原始的幾種數據類型,因此也局限了API設計。並且在Android 2.3模擬器上不穩定,在真機上也會遇到 issue #12987的問題。在IOS上更糟 UIWebView沒有公共的APIs支持JavaScript到Objective-C的交互(你必須使用似有的APIs才能達到與addJavascriptInterface相同的功能)。
PhoneGap 是基於 UIWebView and WebView的比較出名的項目。開發者被迫使用回調函數從JavaScript APIs得到返回值。這在游戲上效率極低,也更為復雜。
早期的ngCore同樣依賴UIWebView來支持iOS。但是這個機制由於其糟糕的表現被取代。
為了獲得更好的表現、靈活性、兼容性,嵌入全功能的JavaScript引擎變得更為有效。
⑵ ios手機怎麼運行js
你必須先啟用做和設置,才能從快捷指令運行 JavaScript。請參閱iphone 或 iPad 上「快捷指令」中的高級隱私和安旁盯全性設置。運胡和
⑶ 如何啟用javascript在Safari和iOS設備
1. 隨著在MacOS上的Safari。點擊Safari菜單,選擇"Preferences…"(或按Command+,)
如果您使用的是Windows上的Safari。點擊Gear icon,選擇"Preferences"。
2. "Preferences"窗口中選擇"Security"選項卡。
"Security"選項卡部分"Web content"標記"Enable JavaScript"復選框。
3. 關閉Preferences彈出窗口,並刷新您的網頁。
適用於iOS的Safari瀏覽器中的JavaScript啟用(iphone, ipod, ipad)
1. 命中Settings圖標。
2. 向下滾動,直到您看到"Safari"點擊它調出選項頁。
3. "JavaScript"選項,打開你做了iOS上的Safari中啟用JavaScript。
⑷ ios裡面怎樣監聽js的事件
在iOS開發之Objective-C與JavaScript交互操作 中我們可以通過 去實現在obj-C中獲取到相關節點屬性,添加javascript代碼等功能。但是我們如何監聽到javascript的響應事件呢。在MAC OS中有效的API去實現,但iPhone沒有,但我們有一個技巧途徑:
大概思路是:在JavaScript事件響應時,通過設置document.location,這會引發webview的一個delegate方法,從而實現發送通知的效果,即達到監聽的目的。
1、在javascript與webView之間定一個協議約定:
myapp:myfunction:myparam1:myparam2
2、在javascript中添加代碼:
document.location = "myapp:" + "myfunction:" + param1 + ":" + param2;
3、在webView的delegate方法webView:shouldStartLoadWithRequest:navigationType: 添加
- (BOOL)webView:(UIWebView *)webView2
shouldStartLoadWithRequest:(NSURLRequest *)request
navigationType:(UIWebViewNavigationType)navigationType {
NSString *requestString = [[request URL] absoluteString];
NSArray *components = [requestString componentsSeparatedByString:@":"];
if ([components count] > 1 &&
[(NSString *)[components objectAtIndex:0] isEqualToString:@"myapp"]) {
if([(NSString *)[components objectAtIndex:1] isEqualToString:@"myfunction"])
{
NSLog([components objectAtIndex:2]); // param1
NSLog([components objectAtIndex:3]); // param2
// Call your method in Objective-C method using the above...
}
return NO;
}
return YES; // Return YES to make sure regular navigation works as expected.
}
⑸ iOS - OC 與 JS 交互六種方式總結
在 APP 中,免不了與 H5頁面打交道,所以掌握 與 JS 交互就顯的至關重要,本文總結了常見的與 JS 交互方式。
注意事項
在 OC 原生中
在 html 文件中
早期的JS與原生交互的開源庫很多都是用得這種方式來實現的,例如:PhoneGap、 WebViewJavascriptBridge 。
效果圖
使用WKNavigationDelegate中的代理方法,攔截自定義的 URL 來實現 JS 調用 OC 方法。
注意點
關於如何區分執行不同的OC 方法,也與UIWebView的處理方式一樣,通過URL 的host 來區分執行不同的方法:
JS 調用OC 方法後,有的操作可能需要將結果返回給JS。這時候就是OC 調用JS 方法的場景。
WKWebView 提供了一個新的方法 evaluateJavaScript:completionHandler: ,實現OC 調用JS 等場景。
注意點
運行結果
在iOS 7之後,apple添加了一個新的庫JavaScriptCore,用來做JS交互,因此JS與原生OC交互也變得簡單了許多。
首先導入JavaScriptCore庫, 然後在OC中獲取JS的上下文。
再然後定義好JS需要調用的方法,例如JS要調用share方法:
則可以在UIWebView載入url完成後,在其代理方法中添加要調用的share方法:
OC 調用 JS 方法有多種,首先介紹使用JavaScriptCore框架的方式。
使用JSContext 的方法 -evaluateScript ,可以實現 OC 調用 JS 方法
效果圖
使用WKWebView的時候,如果想要實現JS調用OC方法,除了攔截URL之外,還有一種簡單的方式。那就是利用WKWebView的新特性MessageHandler來實現JS調用原生方法。
創建 WKWebViewConfiguration 對象,配置各個API對應的MessageHandler。
然後在界面即將顯示的時候添加MessageHandler
需要注意的是addScriptMessageHandler很容易引起循環引用,導致控制器無法被釋放,所以需要移除MessageHandler
這里實現了兩個協議 <WKUIDelegate,WKScriptMessageHandler> , WKUIDelegate 是因為我在JS中彈出了alert 。 WKScriptMessageHandler 是因為我們要處理JS調用OC方法的請求。
WKScriptMessage 有兩個關鍵屬性 name 和 body 。
因為我們給每一個OC 方法取了一個name,那麼我們就可以根據name 來區分執行不同的方法。body 中存著JS 要給OC 傳的參數。
關於參數body 的解析,我就舉一個body中放字典的例子,其他的稍後可以看demo。
解析JS 調用OC 實現分享的參數:
message.boby 就是JS 里傳過來的參數。我們不同的方法先做一下容錯性判斷。然後正常取值就可以了。
下面只列舉一個shareClick()方法,其他看Demo
這里使用WKWebView 實現OC 調用JS方法與之前說的文章一樣,通過
- evaluateJavaScript:completionHandler:
效果圖如下圖所示
詳情看下面文章鏈接
iOS下 JS 與 OC 互相調用(五) - UIWebView+WebViewJavascriptBridge
詳情看下面文章鏈接
iOS下 JS 與 OC 互相調用(六) - WKWebView+WKWebViewJavascriptBridge
iOS下 JS 與OC 互相調用(一) - UIWebView 攔截 URL
iOS下 JS 與OC 互相調用(二) - JavaScriptCore
iOS 下 JS 與 OC 互相調用(三) - WKWebView 攔截 URL
iOS下JS與OC互相調用(四)-MessageHandler
iOS下 JS 與 OC 互相調用(五) - UIWebView+WebViewJavascriptBridge
iOS下 JS 與 OC 互相調用(六) - WKWebView+WKWebViewJavascriptBridge
⑹ ios端對webapp注入javascript時需要注意哪些細節
. 必須要適配所有的智能手機設備
移動設備的屏幕是各式各樣的,對設計影響較大的主要是屏幕解析度、尺寸、屏幕方向這些因素。現在的iOS設備有320×480,640×960,1136×640,1024×768,2048×1536這些解析度,3.5寸、4寸、7.9寸、9.7寸這些尺寸等,未來還有更大的尺寸。
所以,需要解決Web app在不同屏幕下的界面適配問題。
最佳解決辦法有2個:
1、在寫前端頁面的時候,css 採用100%布局
2、採用html5技術來布局開發。
1.1 適配不同解析度
通過響應式網頁的設計方法提升頁面在不同解析度下的兼容性:
由於手機屏幕尺寸下,一般來說只能一個模塊一個模塊地從上到下排列。此時設計者就需要考慮模塊擺放的優先順序了。一般來說,用戶重點關注的、最近更新、與用戶相關的信息應該放在前面。
另外最好以主流解析度480×800進行設計,對略高於和略低於該解析度的屏幕可將界面元素進行縮放,對間距、邊距進行適當調整。
所以,在設定容器、圖片、文本框的寬度時最好避免使用px單位,使用%可使頁面在不同解析度屏幕下保持布局和頁面結構不發生改變。
1.2 平板電腦
使用CSS3的媒體查詢(media query)語句可獲得瀏覽器的高寬和設備的像素比,並可根據開發者的需要對不同的設備應用不同的樣式表。所以開發者可以控制一個頁面在不同設備上的表現。
由於手機屏幕和平板電腦的屏幕尺寸和像素都相去甚遠,所以為了充分利用平板電腦的大屏優勢,以獲得良好的用戶體驗,最好在兩種設備上使用不同的界面布局。相信iOS用戶都有這樣的感覺:有的App只適配iPhone,在iPad上運行則無法布滿屏幕,只能點「2X」按鈕顯示一個粗糙的界面。還有一種App可同時兼容iPhone和iPad,在手機和平板的屏幕上都能完美顯示,用戶也無需單獨下載兩個版本。很明顯,後者使用起來更方便,更美觀。
Mobile Web App使用媒體查詢功能即可實現這種功能。那麼在平板電腦上,有哪些需要注意的設計點呢?
因為平板電腦多在橫屏下使用,所以使用分欄視圖可在一個界面內顯示兩個層級的內容,碼伍方便用戶快速切換item。
首頁多以宮格視圖、Tab為主,微博、qq這種以內容為散岩主的界面將分欄視圖作為默認首頁也是可以的。在手機上最常使用的list在平板上就不是很常用了,整個屏幕顯示list,不僅浪費空間,也沒有分欄視圖的操作高效。
需要注意的是,IE9以下的瀏覽器不支持media query.
1.3 橫豎屏切換
由於目前還不能在webkit內核里禁止設備方向的旋轉,所以如果用戶的設備開啟了屏幕方向根據重力自動旋轉,那麼運遲掘或行於瀏覽器的Web App也是會跟著旋轉的。
如果能夠捕捉到設備的方向,可以對橫豎屏分別進行布局設計,但最好能保證界面風格和樣式不會有大的變化。
反例就是iPhone的音樂App,在豎屏下會顯示歌曲list,但是切換到橫屏下顯示專輯封面。兩種界面風格跳動太大會導致部分用戶不適應,以為是兩個不同的頁面。計算器App也只有在橫屏下才顯示科學計算模式,豎屏下用戶根本無法切換到該模式,連引導也沒有。
宮格視圖是橫豎屏切換最平滑的布局,看看iOS系統的主屏幕就知道了。一個個應用程序圖標在橫豎屏切換時,幾乎只是圖標旋轉了一下方向。
還有一點就是切換到橫屏時,可自動進入全屏模式以顯示更多的內容。否則標題欄和底部欄將會佔去很多空間
2.WebAPP的交互動效
受瀏覽器性能影響,很多Native App能實現的華麗動畫在Web App項目里的表現並不是很好。所以應該果斷去掉非必要的動效以保證Web App能夠運行流暢。
因為很多動效會對用戶起到很好的引導作用,如果沒有這些動畫,可能會導致用戶對界面邏輯關系的理解產生混亂。這就對動效的設計提出了較高的要求。
總結了一下Web App的幾點動效設計原則:
●盡量不使用不必要的動效。
●優先使用簡單的動畫。如平移、縮放。盡量避免使用3D動畫。
●避免刷新頁面。因為整個頁面白屏,瀏覽器走進度條的體驗會給用戶瀏覽網頁的感覺,而不是在使用app
●框架元素優先顯示。只在內容載入區域顯示loading動畫
●避免跳變。在不影響性能的情況下,可盡量用縮放和平移動畫,保證用戶視覺焦點的延續性和理解的延續性。
●同類界面/對象,同層級界面/對象的動效保持一致。可幫助用戶理解產品架構和導航邏輯。
●高層級界面的動效對應高級物理位置。如果左右平移的動畫是用來切換上下一層級,那麼首頁應該是在最左邊,如iOS。如果前後切換的動畫是用來切換上下一層及,那麼首頁應該是在最上面,如Windows Phone。
3.WebAPP的內容布局和APP的風格要保持一致
講導航和信息內容布局的文章眾多,Mobile Web App既然要實現Native App的操作體驗,照傳統的移動客戶端的設計模式去設計即可。只需要記住你設計的Web App需要運行在iOS, Android, Windows Phone等多個平台,多種設備上即可。
由於iOS相比其他平台,沒有back按鍵,所以在iOS上運行需要保證界面內的導航能夠實現閉環。所以Android上有些操作可以通過Menu鍵喚出,但是在iOS上就需要直接暴露出來。
下圖左側是Zaker的Android版,右側是iPhone版。Android版的菜單欄需要點擊Menu鍵才出現。
4.善於使用Native App的UI相關控制項
使用Native App的UI控制項,可以讓Mobile Web App更有Native App的操作體驗。常見的如Badge,Back button,Bubble,Picker,Indicator,Title bar,Dialog,Toast,Loading,Drap down to refresh,Notification等。下圖分別是Facebook的Native App和Web App,由於後者使用了客戶端常見的一些UI控制項,所以用戶很難從視覺上識別出後者是Web App.
避免使用傳統的Web UI控制項,如麵包屑、文字鏈:
另外,在控制項尺寸上也應該像Native App那樣提供盡量大點擊區域的控制項。參照經驗和各平台的官方人機界面指南,可以知道適合用戶手指點擊的尺寸應該在7-9mm之間,不能小於7mm。相鄰點擊控制項的行距不應小於2mm。
5. WebAPP後期需要針對瀏覽器進行優化
為了兼顧瀏覽器的性能和交互,需要注意以下幾點:
●頁面使用盡量少的DOM元素;
0
posted @ 2015-04-08 18:16 小強好吃 閱讀(16) 評論(0) 編輯 收藏
⑺ 蘋果手機如何啟用java script
蘋果手機IOS默認是開啟java script的,它主要在瀏覽器里使用,所以使用的瀏覽器不同內啟用方法不同:
對於容IOS自帶瀏覽器的啟動,依次點:
設置-safari-高級-javascript-然後打開就可以了。
新版IOS操作系統啟動順序是:
依次點 通用、安全、啟用javascript就打開了。
qq瀏覽器的啟動方法:
通過菜單-設置-設為默認瀏覽器這里來設置之後就能啟用了。
⑻ 如何在iOS和Android上選擇一個JavaScript 引擎進行應用開發
這是個比較專業的問題
首先我推薦一個:react native,facebook推出的一個跨平台解決方案,去年推出了iOS版,手機淘寶的有一個模塊「猜你喜歡」就是用react native實現的,效果還不錯,另外今年9月份,facebook推出了android版,大家不妨試一下,這里針對於webapp,做了一個比對:
相對於Webapp的優勢:
不用Webview,徹底擺脫了Webview讓人不爽的交互和性能問題;
有較強的擴展性,這是因為Native端提供的是基本控制項,JS可以自由組合使用;
可以直接使用Native原生的「牛逼」動畫(在FB Group這個app裡面,面板滑出帶一點果凍彈動,面板基於某個點展開這種動畫隨處可見,這種動畫用Native code來做小菜一碟,但是用Web來做就難上加難)。
相對於Native app的優勢:
可以通過服務端遠程更新JS,進而直接更新app的頁面;
相對於Webapp和Native的劣勢:
擴展性仍然遠遠不如web,也遠遠不如直接寫Native code;
從Native到Web,要做很多概念轉換,勢必造成雙方都要妥協。最終web要用一套CSS的閹割版,Native要費勁地把這個閹割版轉換成native原生的表達方式(比如iOS的Constraint\origin\Center等屬性)。
另外我以前在CocoaChina上收藏過的一個帖子,整理了許多iOS和Android跨平台解決方案,感覺很不錯,現在拿出來分享給大家,希望對題主有幫助。
1、jQuery Mobile
jQuery Mobile是jQuery 在手機上和平板設備上的版本。jQuery Mobile 不僅會給主流移動平台帶來jQuery核心庫,而且會發布一個完整統一的jQuery移動UI框架。支持全球主流的移動平台。jQuery Mobile文檔比較全面,同時有在線工具幫你快速創建自己中意的UI風格。
技術需求:HTML,CSS,jQuery
平台支持: 絕大多數移動瀏覽器
2、Corona SDK(使用Lua語言):
Corona SDK的優點:
穩定;支持硬體加速、GPS、指南針及照相機等;支持與Map、Facebook、OpenFient、GameCenter的集成;內建的物理集成;Lua語言比較容易學習;
已經有了一些很不錯的應用,至少能夠證明這個SDK是可以做出優秀應用來的;不錯的社區支持。
Corona SDK不太好的地方:
只支持iOS和Android;Lua語言不是面向對象的;每年都要交授權費(99美元/年)。
另外還有其他的一些補充,比如:
對於Corona SDK不支持的第三方SDK沒法自己去集成;編譯項目的時候需要把代碼上傳到Corona的伺服器上去編譯,不能在本地直接編譯;無法擴展Corona的功能;物理模塊還有一些缺陷。
3、Airplay SDK(後來更名為Marmalade,不少大的公司在使用Airplay SDK,尤其適用於進行2D/3D游戲的開發)
目前使用Marmalade的游戲有《割繩子》、《植物大戰僵屍》、《你猜我畫》、Build 'n' Bash 3D、Catch the Monkey、Need for Speed Shift以及WorkSnug Pro等多款游戲。
Airplay SDK文檔中還包含多個示例。「感覺受到限制」的開發者還可以在Airplay SDK上進行擴展。開發者需要對C++比較熟悉。
4、Appcelerator(Titanium)
Appcelerator允許使用HTML/Javascript來開發原生app,開發者可以免費使用。目前世界上185個國家中有超多46萬的開發者在使用Appcelerator提供的解決方案。
Titanium為Appcelerator於2008年底所推出的跨平台應用程序開發解決方案,目前支持iOS/Android/Blackberry/WM7等行動平台,以及Windows/Linux/OS X這三種主流的桌上型平台。
⑼ 蘋果手機如何運行js腳本運行
1、首先打開蘋果手機,並進入瀏覽器主頁。
2、其次點擊敬滲瀏覽器的腳本運行功能。
3、最後鍵豎導入稿稿大js腳本,進行運行即可。
⑽ ios中怎麼創建javascript
用webview直接打開升弊一個碰物網頁,然後這個網頁能夠調用這個JS就可以了。 就是在webview 提交一個request 然吵吵族後 結果就在 respond 中。