2009-09-08 19 views
3

我有一個簡單的基於WebView的活動,它遵循Hello, WebView示例,以啓用JavaScript並超載shouldOverrideUrlLoading()WebView JavaScript鏈接在觸摸時起作用,但在使用軌跡球時不起作用

此活動在用戶觸摸網頁上的鏈接時效果很好。但是,如果用戶使用軌跡球並單擊鏈接,則生成的頁面加載將顯示JavaScript禁用的頁面。

public class ViewUrl extends Activity { 
    protected WebView view; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.view_url); 

     final String url = "http://www.opentable.com/phone/reviews.aspx?rid=2947"; 

     view = (WebView) findViewById(R.id.widget1); 
     view.getSettings().setJavaScriptEnabled(true); 
     view.loadUrl(url); 
     view.setWebViewClient(new WebViewClient() { 
      @Override 
      public boolean shouldOverrideUrlLoading(WebView view, String url) { 
       view.loadUrl(url); 
       return true; 
      } 

     }); 
    } 
} 

的view_url.xml文件很簡單:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <WebView 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:id="@+id/widget1" /> 

</RelativeLayout> 

下面是既顯示了正確和不正確的行爲的一些截圖。

點擊使用觸摸(正確):

Click using Touch (CORRECT) http://img.skitch.com/20090908-g2acnrpb1riuq11ys3p1u6fd4d.png

點擊使用軌跡球(錯誤):

Click using Trackball (INCORRECT) http://img.skitch.com/20090908-my23yxakudwhheq875j2hcwg6h.png

任何想法如何,我可以修復軌跡球行爲是一樣的觸摸行爲?或者當通過軌跡球點擊鏈接時至少啓用JS?

回答

1

看來「Hello,WebView」示例已損壞。根據IRC頻道上的某個人的建議,我刪除了shouldOverrideUrlLoading()的覆蓋,並且一切似乎都在順利進行。

修訂工作代碼:

public class ViewUrl extends Activity { 
    protected WebView view; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.view_url); 

     final String url = "http://www.opentable.com/phone/reviews.aspx?rid=2947"; 

     view = (WebView) findViewById(R.id.widget1); 
     view.getSettings().setJavaScriptEnabled(true); 
     view.loadUrl(url); 
     view.setWebViewClient(new WebViewClient()); // probably not necessary if you don't do anything else with the WebViewClient 
    } 
} 
相關問題