意外触发 Onclick 处理程序加载

Trigger Onclick Handler Onload By Accident

我有以下 class 意外触发 onclick 处理程序加载。

import android.app.Activity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends Activity {
  private WebView w;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    w = (WebView) findViewById(R.id.activity_main_webview);
    w.getSettings().setJavaScriptEnabled(true);
    w.getSettings().setBuiltInZoomControls(true);
    w.getSettings().setDisplayZoomControls(false);
    w.setWebChromeClient(new WebChromeClient());
    w.loadUrl("http://dus.tn/music.html");

    w.setWebViewClient(new WebViewClient() { public void onPageFinished(WebView w, String url) {
        String s = "javascript:"
          + "(function () {"
          + "  try{document.body.style.color='blue';del();}catch(e){}"
          + "})();";
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT)
          w.evaluateJavascript(s, null);
        else w.loadUrl(s);
      }
    });
  }
  @Override
  public void onBackPressed() {
    if(w.canGoBack())w.goBack();
    else super.onBackPressed();
  }
}

html 代码是 here 同时也张贴在 dus.tn/music.html.

所以我不确定为什么会触发 onclick 事件,但添加以下内容似乎有效。

function del(a){
  if(this == window)return;
  if (window.confirm("Delete?")) { 
    $(a).parent().remove();
  }
}

及以下

<a class=del href="#del" onclick="del.call(this,this);return false">X</a>