<script> setTimeout(function(){ var myE = document.getElementById("myElement"); alert("jwGetPlaylist:" + myE["$version"]); var result = myE["jwGetPlaylist"](); result = myE["jwGetPlaylist"](); alert("jwGetPlaylist:" + result); }, 2000); </script>
上面是测试代码。下面的堆栈:
blink::npObjectGetProperty
blink::npObjectNamedPropertyGetter v8::internal::PropertyCallbackArguments::Call v8::internal::JSObject::GetPropertyWithInterceptor v8::internal::Object::GetProperty v8::internal::Runtime::GetObjectProperty v8::Object::Get blink::`anonymous namespace'::getScriptableObjectProperty<blink::V8HTMLObjectElement,v8::Local<v8::String> > blink::V8HTMLObjectElement::namedPropertyGetterCustom blink::HTMLObjectElementV8Internal::namedPropertyGetterCallback v8::internal::PropertyCallbackArguments::Call v8::internal::JSObject::GetPropertyWithInterceptor v8::internal::Object::GetProperty v8::internal::LoadIC::Load v8::internal::__RT_impl_Runtime_LoadIC_Miss v8::internal::Runtime_LoadIC_Miss v8::internal::`anonymous namespace'::Invoke v8::internal::Execution::Call v8::Function::Call blink::V8ScriptRunner::callFunction blink::ScriptController::callFunction blink::ScriptController::callFunction blink::V8EventListener::callListenerFunction blink::V8AbstractEventListener::invokeEventHandler blink::V8AbstractEventListener::handleEvent blink::V8AbstractEventListener::handleEvent blink::EventTarget::fireEventListeners blink::Node::handleLocalEvents blink::NodeEventContext::handleLocalEvents blink::EventDispatcher::dispatchEventAtTarget blink::EventDispatcher::dispatch blink::EventDispatchMediator::dispatchEvent blink::EventDispatcher::dispatchEvent blink::Node::dispatchEvent blink::Document::finishedParsing blink::HTMLConstructionSite::finishedParsing blink::HTMLTreeBuilder::finished blink::HTMLDocumentParser::end blink::HTMLDocumentParser::attemptToRunDeferredScriptsAndEnd blink::HTMLDocumentParser::prepareToStopParsing blink::HTMLDocumentParser::processParsedChunkFromBackgroundParser blink::HTMLDocumentParser::pumpPendingSpeculations blink::HTMLDocumentParser::resumeParsingAfterYield blink::HTMLParserScheduler::continueParsing WTF::FunctionWrapper<void (__thiscall blink::HTMLParserScheduler::*)(void)>::operator()(blink::HTMLParserScheduler * c) 行 83C++ blink::CancellableTaskFactory::CancellableTask::run content::WebTimerBase::fired content::WebThreadImpl::schedulerTasks content::WebThreadImpl::fire
content::TimerWindowWndProc
执行js
E:\mycode\miniblink49\trunk\third_party\WebKit\Source\bindings\core\v8\NPV8Object.cpp
node.dll!blink::ScriptController::executeScriptAndReturnValue node.dll!_NPN_EvaluateHelper node.dll!_NPN_Evaluate