我正在开发一款主要是网络视图的iPad应用。它是一个使用jQuery mobile,iScroll和一些小插件的Web应用程序。在应用程序中只有两个一致的插件是jQuery mobile和iScroll,所以我不会列出所有小插件,因为在各种不同情况下可以在应用程序中触发相同的崩溃。
我遇到的真正问题是xCode给我的唯一消息是WebCore在崩溃之前正在做的事情。我无法做出正面或反面。我一整天都在寻找解决问题的办法,但一直没找到。
输出如下:
1 WebCore::ScriptExecutionContext::destroyedActiveDOMObject(WebCore::ActiveDOMObject*)
2 WebCore::ActiveDOMObject::~ActiveDOMObject()
3 WebCore::SuspendableTimer::~SuspendableTimer()
4 WebCore::DOMTimer::~DOMTimer()
5 WebCore::DOMTimer::removeById(WebCore::ScriptExecutionContext*, int)
6 WebCore::DOMWindow::clearTimeout(int)
7 WebCore::jsDOMWindowPrototypeFunctionClearTimeout(JSC::ExecState*)
8 JSC::Interpreter::privateExecute(JSC::Interpreter::ExecutionFlag, JSC::RegisterFile*, JSC::ExecState*)
9 JSC::Interpreter::executeCall(JSC::ExecState*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
10 JSC::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&)
11 WebCore::JSEventListener::handleEvent(WebCore::ScriptExecutionContext*, WebCore::Event*)
12 WebCore::EventTarget::fireEventListeners(WebCore::Event*, WebCore::EventTargetData*, WTF::Vector<WebCore::RegisteredEventListener, 1ul>&)
13 WebCore::EventTarget::fireEventListeners(WebCore::Event*)
14 WebCore::Node::handleLocalEvents(WebCore::Event*)
15 WebCore::EventContext::handleLocalEvents(WebCore::Event*) const
16 WebCore::EventDispatcher::dispatchEvent(WTF::PassRefPtr<WebCore::Event>)
17 WebCore::EventDispatchMediator::dispatchEvent(WebCore::EventDispatcher*) const
18 WebCore::EventDispatcher::dispatchEvent(WebCore::Node*, WebCore::EventDispatchMediator const&)
19 WebCore::Node::dispatchEvent(WTF::PassRefPtr<WebCore::Event>)
20 WebCore::EventTarget::dispatchEvent(WTF::PassRefPtr<WebCore::Event>, int&)
21 WebCore::EventHandler::dispatchTouchEvent(WebCore::PlatformTouchEvent const&, WTF::AtomicString const&, WTF::HashMap<WebCore::EventTarget*, WTF::Vector<WTF::RefPtr<WebCore::Touch>, 0ul>*, WTF::PtrHash<WebCore::EventTarget*>, WTF::HashTraits<WebCore::EventTarget*>, WTF::HashTraits<WTF::Vector<WTF::RefPtr<WebCore::Touch>, 0ul>*> > const&, float, float)
22 WebCore::EventHandler::handleTouchEvent(WebCore::PlatformTouchEvent const&)
23 WebCore::EventHandler::touchEvent(WebEvent*)
24 -[WebHTMLView touch:]
25 -[WAKView _handleEvent:]
26 _ZL13eventCallbackP6WKViewP8WebEventPv
27 _WKViewHandleEvent
28 WKWindowSendEvent
29 -[UIWebBrowserView _dispatchWebEvent:]
30 -[UIWebBrowserView _webTouchEventsRecognized:]
31 -[NSObject performSelector:withObject:]
我得到的唯一真正错误是Thread 1: Program received signal: "EXC_BAD_ACCESS"
提前致谢,我很高兴能得到任何帮助。请指出我正确的方向。
答案 0 :(得分:1)
好的,好像我终于解决了这个问题。以为我会在这里分享。
我仍然不知道究竟是什么导致应用程序崩溃,但我发现的修复似乎解决了这个问题。
所以,因为我在xcode的输出中得到的东西来自webkits核心(至少我认为这与我对此有限的知识),这使我开始查看正在提供webview的网站。
我已经阅读了很多关于移动设备中html5视频问题的内容,所以我开始关注它。我改变了所有的JavaScript并为网站提供了一个单独的html 5视频元素。一切都很好,但是当我添加回jQuery-mobile时,一旦我在视频播放的同时尝试滚动,就会返回崩溃。
我之前知道在iOS设备上使用海报图片时存在一些问题。所以我删除了这个,这就是诀窍。
总结一下:
这就是我所拥有的:
<video class="videoSignPlayer" poster="poster.jpg" width="768" height="512" style="display:none;">
<source src="movie.mp4" width="768" type='video/mp4;
codecs="avc1.4D401E, mp4a.40.2"' />
</video>
这是工作标记:
<video class="videoSignPlayer" width="768" height="512" style="display:none;">
<source src="movie.mp4" width="768" type='video/mp4;
codecs="avc1.4D401E, mp4a.40.2"' />
</video>
简单修复。
使用jQuery-mobile时,在视频元素上使用poster属性似乎有问题。
(是的,我也尝试在<img>
标签中预加载海报图片。崩溃的唯一解决方法是完全删除<video>
标签上的海报属性。)