Driver.tap crash on webview in hybrid app

I want to tap an coordinate on the webpage after I go to a website in an hybrid app.
An error occurred: An error occurred while executing user supplied JavaScript.
It looks the tap() method only available on native app.
Have anyone met this problem? Any solutions?

My target platform: iOS 8 (real device)

my tools version are:

Appium-Python-Client==0.17

enum34==1.0.4

selenium==2.47.3

appium ==1.4.11

developing OS:Mac 10.10.5

Server side message is as below:
info: [debug] Pushing command to appium work queue: “UIATarget.localTarget().frontMostApp().rect()”
info: [debug] Sending command to instruments: UIATarget.localTarget().frontMostApp().rect()
info: [debug] [INST] 2015-10-30 10:50:14 +0000 Debug: Got new command 20 from instruments: UIATarget.localTarget().frontMostApp().rect()
info: [debug] [INST] 2015-10-30 10:50:14 +0000 Debug: evaluating UIATarget.localTarget().frontMostApp().rect()
info: [debug] [INST] 2015-10-30 10:50:14 +0000 Debug: evaluation finished
info: [debug] [INST] 2015-10-30 10:50:14 +0000 Debug: responding with:
info: [debug] [INST] 2015-10-30 10:50:14 +0000 Debug: Running system command #21: /usr/local/Cellar/node/4.1.0/bin/node /usr/local/lib/node_modules/appium/node_modules/appium-uiauto/bin/command-proxy-client.js /tmp/instruments_sock 2,{“status”:0,“value”:{“origin”:{“x”:20,“y”:-256},“size”:{“width”:748,“height”:1024}}}…
info: [debug] Socket data received (86 bytes)
info: [debug] Socket data being routed.
info: [debug] Got result from instruments: {“status”:0,“value”:{“origin”:{“x”:20,“y”:-256},“size”:{“width”:748,“height”:1024}}}
info: [debug] Pushing command to appium work queue: “UIATarget.localTarget().frontMostApp().tapWithOptions({“tapOffset”:{“x”:0.8609625668449198,“y”:0.111328125},“tapCount”:1,“touchCount”:1})”
info: [debug] Sending command to instruments: UIATarget.localTarget().frontMostApp().tapWithOptions({“tapOffset”:{“x”:0.8609625668449198,“y”:0.111328125},“tapCount”:1,“touchCount”:1})
info: [debug] [INST] 2015-10-30 10:50:15 +0000 Debug: Got new command 21 from instruments: UIATarget.localTarget().frontMostApp().tapWithOptions({“tapOffset”:{“x”:0.8609625668449198,“y”:0.111328125},“tapCount”:1,“touchCount”:1})
info: [debug] [INST] 2015-10-30 10:50:15 +0000 Debug: evaluating UIATarget.localTarget().frontMostApp().tapWithOptions({“tapOffset”:{“x”:0.8609625668449198,“y”:0.111328125},“tapCount”:1,“touchCount”:1})
info: [debug] [INST] 2015-10-30 10:50:15 +0000 Debug: target.frontMostApp().tapWithOptions({tapOffset:{x:“0.8609625668449198”, y:“0.111328125”}, touchCount:“1”, tapCount:“1”})
info: [debug] [INST] 2015-10-30 10:50:15 +0000 Debug: tap point is not within the bounds of the screen
info: [debug] [INST] 2015-10-30 10:50:15 +0000 Error: VerboseError: tap point is not within the bounds of the screen
info: [debug] [INST] 2015-10-30 10:50:16 +0000 Error: Error during eval: tapWithOptions@[native code]
eval code
eval@[native code]
startProcessing@file:///usr/local/lib/node_modules/appium/6525401D-A784-4E32-AF7F-5C7760B9B393/bootstrap-92788c7fc5a72907.js:2702:30
bootstrap@file:///usr/local/lib/node_modules/appium/6525401D-A784-4E32-AF7F-5C7760B9B393/bootstrap-92788c7fc5a72907.js:2770:31
global code@file:///usr/local/lib/node_modules/appium/6525401D-A784-4E32-AF7F-5C7760B9B393/bootstrap-92788c7fc5a72907.js:2779:10
info: [debug] Socket data received (74 bytes)
info: [debug] [INST] 2015-10-30 10:50:16 +0000 Debug: responding with:
info: [debug] Socket data being routed.
info: [debug] Got result from instruments: {“status”:17,“value”:“tap point is not within the bounds of the screen”}
info: [debug] Responding to client with error: {“status”:17,“value”:{“message”:“An error occurred while executing user supplied JavaScript.”,“origValue”:“tap point is not within the bounds of the screen”},“sessionId”:“f16c6532-4942-4c8c-b07f-482c70600cc9”}
info: <-- POST /wd/hub/session/f16c6532-4942-4c8c-b07f-482c70600cc9/touch/perform 500 3111.065 ms - 209
info: [debug] [INST] 2015-10-30 10:50:16 +0000 Debug: Running system command #22: /usr/local/Cellar/node/4.1.0/bin/node /usr/local/lib/node_modules/appium/node_modules/appium-uiauto/bin/command-proxy-client.js /tmp/instruments_sock 2,{“status”:17,“value”:“tap point is not within the bounds of the screen”}…
info: --> DELETE /wd/hub/session/f16c6532-4942-4c8c-b07f-482c70600cc9 {}
info: Shutting down appium session