⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kjs_window.cpp

📁 将konqueror浏览器移植到ARM9 2410中
💻 CPP
📖 第 1 页 / 共 3 页
字号:
  else if (p == "prompt")    return Function(new WindowFunc(this, WindowFunc::Prompt));  else if (p == "open")    return Function(new WindowFunc(this, WindowFunc::Open));  else if (p == "setTimeout") {    if (isSafeScript())      return Function(new WindowFunc(this, WindowFunc::SetTimeout));    else      return Undefined();  }  else if (p == "clearTimeout") {    if (isSafeScript())      return Function(new WindowFunc(this, WindowFunc::ClearTimeout));    else      return Undefined();  }  else if (p == "focus")    return Function(new WindowFunc(this, WindowFunc::Focus));  else if (p == "blur")    return Function(new WindowFunc(this, WindowFunc::Blur));  else if (p == "close")    return Function(new WindowFunc(this, WindowFunc::Close));  else if (p == "setInterval") {    if (isSafeScript())      return Function(new WindowFunc(this, WindowFunc::SetInterval));    else      return Undefined();  }  else if (p == "clearInterval") {    if (isSafeScript())      return Function(new WindowFunc(this, WindowFunc::ClearInterval));    else      return Undefined();  }  else if (p == "onabort") {    if (isSafeScript())      return getListener(DOM::EventImpl::ABORT_EVENT);    else      return Undefined();  }  else if (p == "onblur") {    if (isSafeScript())      return getListener(DOM::EventImpl::BLUR_EVENT);    else      return Undefined();  }  else if (p == "onchange") {    if (isSafeScript())      return getListener(DOM::EventImpl::CHANGE_EVENT);    else      return Undefined();  }  else if (p == "onclick") {    if (isSafeScript())      return getListener(DOM::EventImpl::KHTML_CLICK_EVENT);    else      return Undefined();  }  else if (p == "ondblclick") {    if (isSafeScript())      return getListener(DOM::EventImpl::KHTML_DBLCLICK_EVENT);    else      return Undefined();  }  else if (p == "ondragdrop") {    if (isSafeScript())      return getListener(DOM::EventImpl::KHTML_DRAGDROP_EVENT);    else      return Undefined();  }  else if (p == "onerror") {    if (isSafeScript())      return getListener(DOM::EventImpl::KHTML_ERROR_EVENT);    else      return Undefined();  }  else if (p == "onfocus") {    if (isSafeScript())      return getListener(DOM::EventImpl::FOCUS_EVENT);    else      return Undefined();  }  else if (p == "onkeydown") {    if (isSafeScript())      return getListener(DOM::EventImpl::KHTML_KEYDOWN_EVENT);    else      return Undefined();  }  else if (p == "onkeypress") {    if (isSafeScript())      return getListener(DOM::EventImpl::KHTML_KEYPRESS_EVENT);    else      return Undefined();  }  else if (p == "onkeyup") {    if (isSafeScript())      return getListener(DOM::EventImpl::KHTML_KEYUP_EVENT);    else      return Undefined();  }  else if (p == "onload") {    if (isSafeScript())      return getListener(DOM::EventImpl::LOAD_EVENT);    else      return Undefined();  }  else if (p == "onmousedown") {    if (isSafeScript())      return getListener(DOM::EventImpl::MOUSEDOWN_EVENT);    else      return Undefined();  }  else if (p == "onmousemove") {    if (isSafeScript())      return getListener(DOM::EventImpl::MOUSEMOVE_EVENT);    else      return Undefined();  }  else if (p == "onmouseout") {    if (isSafeScript())      return getListener(DOM::EventImpl::MOUSEOUT_EVENT);    else      return Undefined();  }  else if (p == "onmouseover") {    if (isSafeScript())      return getListener(DOM::EventImpl::MOUSEOVER_EVENT);    else      return Undefined();  }  else if (p == "onmouseup") {    if (isSafeScript())      return getListener(DOM::EventImpl::MOUSEUP_EVENT);    else      return Undefined();  }  else if (p == "onmove") {    if (isSafeScript())      return getListener(DOM::EventImpl::KHTML_MOVE_EVENT);    else      return Undefined();  }  else if (p == "onreset") {    if (isSafeScript())      return getListener(DOM::EventImpl::RESET_EVENT);    else      return Undefined();  }  else if (p == "onresize") {    if (isSafeScript())      return getListener(DOM::EventImpl::RESIZE_EVENT);    else      return Undefined();  }  else if (p == "onselect") {    if (isSafeScript())      return getListener(DOM::EventImpl::SELECT_EVENT);    else      return Undefined();  }  else if (p == "onsubmit") {    if (isSafeScript())      return getListener(DOM::EventImpl::SUBMIT_EVENT);    else      return Undefined();  }  else if (p == "onunload") {    if (isSafeScript())      return getListener(DOM::EventImpl::UNLOAD_EVENT);    else      return Undefined();  }  KHTMLPart *kp = m_part->findFrame( p.qstring() );  if (kp)    return KJSO(retrieve(kp));  // allow shortcuts like 'Image1' instead of document.images.Image1  if (isSafeScript() &&      m_part->document().isHTMLDocument()) { // might be XML    DOM::HTMLCollection coll = m_part->htmlDocument().all();    DOM::HTMLElement element = coll.namedItem(p.string());    if (!element.isNull()) {        return getDOMNode(element);    }  }  return Undefined();}void Window::put(const UString &p, const KJSO &v){  if (p == "status") {    String s = v.toString();    m_part->setJSStatusBarText(s.value().qstring());  }  else if (p == "defaultStatus" || p == "defaultstatus") {    String s = v.toString();    m_part->setJSDefaultStatusBarText(s.value().qstring());  }  else if (p == "location") {    QString str = v.toString().value().qstring();    m_part->scheduleRedirection(0, Window::retrieveActive()->m_part->                              completeURL(str).url().prepend( "target://_self/#" ));  }  else if (p == "onabort") {    if (isSafeScript())      setListener(DOM::EventImpl::ABORT_EVENT,v);  }  else if (p == "onblur") {    if (isSafeScript())      setListener(DOM::EventImpl::BLUR_EVENT,v);  }  else if (p == "onchange") {    if (isSafeScript())      setListener(DOM::EventImpl::CHANGE_EVENT,v);  }  else if (p == "onclick") {    if (isSafeScript())      setListener(DOM::EventImpl::KHTML_CLICK_EVENT,v);  }  else if (p == "ondblclick") {    if (isSafeScript())      setListener(DOM::EventImpl::KHTML_DBLCLICK_EVENT,v);  }  else if (p == "ondragdrop") {    if (isSafeScript())      setListener(DOM::EventImpl::KHTML_DRAGDROP_EVENT,v);  }  else if (p == "onerror") {    if (isSafeScript())      setListener(DOM::EventImpl::KHTML_ERROR_EVENT,v);  }  else if (p == "onfocus") {    if (isSafeScript())      setListener(DOM::EventImpl::FOCUS_EVENT,v);  }  else if (p == "onkeydown") {    if (isSafeScript())      setListener(DOM::EventImpl::KHTML_KEYDOWN_EVENT,v);  }  else if (p == "onkeypress") {    if (isSafeScript())      setListener(DOM::EventImpl::KHTML_KEYPRESS_EVENT,v);  }  else if (p == "onkeyup") {    if (isSafeScript())      setListener(DOM::EventImpl::KHTML_KEYUP_EVENT,v);  }  else if (p == "onload") {    if (isSafeScript())      setListener(DOM::EventImpl::LOAD_EVENT,v);  }  else if (p == "onmousedown") {    if (isSafeScript())      setListener(DOM::EventImpl::MOUSEDOWN_EVENT,v);  }  else if (p == "onmousemove") {    if (isSafeScript())      setListener(DOM::EventImpl::MOUSEMOVE_EVENT,v);  }  else if (p == "onmouseout") {    if (isSafeScript())      setListener(DOM::EventImpl::MOUSEOUT_EVENT,v);  }  else if (p == "onmouseover") {    if (isSafeScript())      setListener(DOM::EventImpl::MOUSEOVER_EVENT,v);  }  else if (p == "onmouseup") {    if (isSafeScript())      setListener(DOM::EventImpl::MOUSEUP_EVENT,v);  }  else if (p == "onmove") {    if (isSafeScript())      setListener(DOM::EventImpl::KHTML_MOVE_EVENT,v);  }  else if (p == "onreset") {    if (isSafeScript())      setListener(DOM::EventImpl::RESET_EVENT,v);  }  else if (p == "onresize") {    if (isSafeScript())      setListener(DOM::EventImpl::RESIZE_EVENT,v);  }  else if (p == "onselect") {    if (isSafeScript())      setListener(DOM::EventImpl::SELECT_EVENT,v);  }  else if (p == "onsubmit") {    if (isSafeScript())      setListener(DOM::EventImpl::SUBMIT_EVENT,v);  }  else if (p == "onunload") {    if (isSafeScript())      setListener(DOM::EventImpl::UNLOAD_EVENT,v);  }  else if (p == "name") {    if (isSafeScript())      m_part->setName( v.toString().value().qstring().local8Bit().data() );  }  else {    if (isSafeScript())      Imp::put(p, v);  }}Boolean Window::toBoolean() const{  return Boolean(!m_part.isNull());}int Window::installTimeout(const UString &handler, int t, bool singleShot){  return winq->installTimeout(handler, t, singleShot);}void Window::clearTimeout(int timerId){  winq->clearTimeout(timerId);}void Window::scheduleClose(){  kdDebug(6070) << "WindowFunc::tryExecute window.close() " << m_part << endl;  QTimer::singleShot( 0, winq, SLOT( timeoutClose() ) );}bool Window::isSafeScript() const{  KHTMLPart *act = (KHTMLPart*)KJS::Global::current().extra();  if (!act)      kdDebug(6070) << "Window::isSafeScript: KJS::Global::current().extra() is 0L!" << endl;  return act && originCheck(m_part->url(), act->url());}void Window::setListener(int eventId, KJSO func){  if (!isSafeScript())    return;  DOM::DocumentImpl *doc = static_cast<DOM::DocumentImpl*>(m_part->htmlDocument().handle());  if (!doc)    return;  doc->setWindowEventListener(eventId,getJSEventListener(func,true));}KJSO Window::getListener(int eventId) const{  if (!isSafeScript())    return Undefined();  DOM::DocumentImpl *doc = static_cast<DOM::DocumentImpl*>(m_part->htmlDocument().handle());  if (!doc)    return Undefined();  DOM::EventListener *listener = doc->getWindowEventListener(eventId);  if (listener)    return static_cast<JSEventListener*>(listener)->listenerObj();  else    return Null();}JSEventListener *Window::getJSEventListener(const KJSO &obj, bool html){  if (obj.isA(KJS::NullType))    return 0;  QListIterator<JSEventListener> it(jsEventListeners);  for (; it.current(); ++it)    if (it.current()->listenerObj().imp() == obj.imp())      return it.current();  JSEventListener *listener = new JSEventListener(obj,KJSO(this),html);//  jsEventListeners.append(listener);  return listener;}void Window::clear(){  delete winq;  winq = 0;}Completion WindowFunc::tryExecute(const List &args){  KJSO result;  QString str, str2;  int i;  KHTMLPart *part = window->m_part;  if (!part)    return Completion(Normal);  KHTMLView *widget = part->view();  KJSO v = args[0];  String s = v.toString();  str = s.value().qstring();  KJScript *currentScript = KJScript::current();  switch (id) {  case Alert:    part->xmlDocImpl()->updateRendering();    KMessageBox::error(widget, str, "JavaScript");    result = Undefined();    break;  case Confirm:    part->xmlDocImpl()->updateRendering();    i = KMessageBox::warningYesNo(widget, str, "JavaScript",                                  i18n("OK"), i18n("Cancel"));    result = Boolean((i == KMessageBox::Yes));    break;  case Prompt:    part->xmlDocImpl()->updateRendering();    if (args.size() >= 2)      str2 = QInputDialog::getText("Konqueror: Prompt", str,                                   args[1].toString().value().qstring());    else      str2 = QInputDialog::getText("Konqueror: Prompt", str);    result = String(str2);    break;  case Open:  {    KConfig *config = new KConfig("konquerorrc");    config->setGroup("Java/JavaScript Settings");    int policy = config->readUnsignedNumEntry( "WindowOpenPolicy", 0 );    if ( policy == 1 ) {      if ( KMessageBox::questionYesNo(widget,                                      i18n( "This site is trying to open up a new browser "                                            "window using Javascript.\n\n"                                            "Do you want to allow this?" ),                                      i18n( "Confirmation: Javascript Popup" ) ) == KMessageBox::Yes )        policy = 0;    }    if ( policy ) {      result = Undefined();    } else {      KParts::WindowArgs winargs;      // scan feature argument      v = args[2];      QString features;      if (v.isDefined()) {	features = v.toString().value().qstring();	// specifying window params means false defaults	winargs.menuBarVisible = false;	winargs.toolBarsVisible = false;	winargs.statusBarVisible = false;	QStringList flist = QStringList::split(',', features);	QStringList::ConstIterator it = flist.begin();	while (it != flist.end()) {	  QString s = *it++;	  QString key, val;	  int pos = s.find('=');	  if (pos >= 0) {	    key = s.left(pos).stripWhiteSpace().lower();	    val = s.mid(pos + 1).stripWhiteSpace().lower();	    if (key == "left" || key == "screenx")	      winargs.x = val.toInt();	    else if (key == "top" || key == "screeny")	      winargs.y = val.toInt();	    else if (key == "height")	      winargs.height = val.toInt() + 4;	    else if (key == "width")	      winargs.width = val.toInt() + 4;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -