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

📄 kjs_window.cpp

📁 khtml在gtk上的移植版本
💻 CPP
📖 第 1 页 / 共 5 页
字号:
UString Window::toString(ExecState *) const{  return "[object Window]";}Value Window::get(ExecState *exec, const Identifier &p) const{#ifdef KJS_VERBOSE  kdDebug(6070) << "Window("<<this<<")::get " << p.qstring() << endl;#endif  if ( p == "closed" )    return Boolean(m_part.isNull());  // we don't want any operations on a closed window  if (m_part.isNull())    return Undefined();  // Look for overrides first  ValueImp * val = ObjectImp::getDirect(p);  if (val) {    //kdDebug(6070) << "Window::get found dynamic property '" << p.ascii() << "'" << endl;    if (isSafeScript(exec))      return Value(val);  }  const HashEntry* entry = Lookup::findEntry(&WindowTable, p);  if (entry)  {    //kdDebug(6070) << "token: " << entry->value << endl;    switch( entry->value ) {    case Crypto:      return Undefined(); // ###    case DefaultStatus:      return String(UString(m_part->jsDefaultStatusBarText()));    case Status:      return String(UString(m_part->jsStatusBarText()));    case Document:      if (isSafeScript(exec))      {        if (m_part->document().isNull()) {#if APPLE_CHANGES          KWQ(m_part)->createEmptyDocument();#endif          kdDebug(6070) << "Document.write: adding <HTML><BODY> to create document" << endl;          m_part->begin();          m_part->write("<HTML><BODY>");          m_part->end();        }        Value val = getDOMNode(exec,m_part->document());        return val;      }      else        return Undefined();    case Node:      return getNodeConstructor(exec);    case Range:      return getRangeConstructor(exec);    case NodeFilter:      return getNodeFilterConstructor(exec);    case DOMException:      return getDOMExceptionConstructor(exec);    case CSSRule:      return getCSSRuleConstructor(exec);    case EventCtor:      return getEventConstructor(exec);    case Frames:      return Value(frames ? frames :                   (const_cast<Window*>(this)->frames = new FrameArray(exec,m_part)));    case _History:      return Value(history ? history :                   (const_cast<Window*>(this)->history = new History(exec,m_part)));    case Event:      if (m_evt)        return getDOMEvent(exec,*m_evt);      else {#ifdef KJS_VERBOSE        kdWarning(6070) << "window(" << this << "," << m_part->name() << ").event, no event!" << endl;#endif        return Undefined();      }    case InnerHeight:      if (!m_part->view())        return Undefined();      updateLayout();      return Number(m_part->view()->visibleHeight());    case InnerWidth:      if (!m_part->view())        return Undefined();      updateLayout();      return Number(m_part->view()->visibleWidth());    case Length:      return Number(m_part->frames().count());    case _Location:      return Value(location());    case Name:      return String(m_part->name());    case _Navigator:    case ClientInformation: {      // Store the navigator in the object so we get the same one each time.      Navigator *n = new Navigator(exec, m_part);      const_cast<Window *>(this)->putDirect("navigator", n, DontDelete|ReadOnly);      const_cast<Window *>(this)->putDirect("clientInformation", n, DontDelete|ReadOnly);      return Value(n);    }#ifdef Q_WS_QWS    case _Konqueror:      return Value(new Konqueror(m_part));#endif    case OffscreenBuffering:      return Boolean(true);    case Opener:      if (!m_part->opener())        return Null();    // ### a null Window might be better, but == null      else                // doesn't work yet        return retrieve(m_part->opener());    case OuterHeight:    case OuterWidth:    {      if (!m_part->view())        return Number(0);      KWin::Info inf = KWin::info(m_part->view()->topLevelWidget()->winId());      return Number(entry->value == OuterHeight ?                    inf.geometry.height() : inf.geometry.width());    }    case PageXOffset:      if (!m_part->view())        return Undefined();      updateLayout();      return Number(m_part->view()->contentsX());    case PageYOffset:      if (!m_part->view())        return Undefined();      updateLayout();      return Number(m_part->view()->contentsY());    case Parent:      return Value(retrieve(m_part->parentPart() ? m_part->parentPart() : (KHTMLPart*)m_part));    case Personalbar:      return Undefined(); // ###    case ScreenLeft:    case ScreenX: {      if (!m_part->view())        return Undefined();      QRect sg = QApplication::desktop()->screenGeometry(QApplication::desktop()->screenNumber(m_part->view()));      return Number(m_part->view()->mapToGlobal(QPoint(0,0)).x() + sg.x());    }    case ScreenTop:    case ScreenY: {      if (!m_part->view())        return Undefined();      QRect sg = QApplication::desktop()->screenGeometry(QApplication::desktop()->screenNumber(m_part->view()));      return Number(m_part->view()->mapToGlobal(QPoint(0,0)).y() + sg.y());    }    case ScrollX: {      if (!m_part->view())        return Undefined();      updateLayout();      return Number(m_part->view()->contentsX());    }    case ScrollY: {      if (!m_part->view())        return Undefined();      updateLayout();      return Number(m_part->view()->contentsY());    }    case Scrollbars:      return Undefined(); // ###    case Self:    case _Window:      return Value(retrieve(m_part));    case Top: {      KHTMLPart *p = m_part;      while (p->parentPart())        p = p->parentPart();      return Value(retrieve(p));    }    case _Screen:      return Value(screen ? screen :                   (const_cast<Window*>(this)->screen = new Screen(exec)));    case Image:      return Value(new ImageConstructorImp(exec, m_part->document()));    case Option:      return Value(new OptionConstructorImp(exec, m_part->document()));    case XMLHttpRequest:      return Value(new XMLHttpRequestConstructorImp(exec, m_part->document()));    case XMLSerializer:      return Value(new XMLSerializerConstructorImp(exec));    case Alert:    case Confirm:    case Prompt:    case Open:#if APPLE_CHANGES    case Print:#endif    case Focus:    case Blur:    case Close:    case Scroll: // compatibility    case ScrollBy:    case ScrollTo:    case MoveBy:    case MoveTo:    case ResizeBy:    case ResizeTo:	return lookupOrCreateFunction<WindowFunc>(exec,p,this,entry->value,entry->params,entry->attr);    case CaptureEvents:    case ReleaseEvents:    case AddEventListener:    case RemoveEventListener:    case SetTimeout:    case ClearTimeout:    case SetInterval:    case ClearInterval:    case GetSelection:      if (isSafeScript(exec))        return lookupOrCreateFunction<WindowFunc>(exec,p,this,entry->value,entry->params,entry->attr);      else        return Undefined();    case Onabort:      if (isSafeScript(exec))        return getListener(exec,DOM::EventImpl::ABORT_EVENT);      else        return Undefined();    case Onblur:      if (isSafeScript(exec))        return getListener(exec,DOM::EventImpl::BLUR_EVENT);      else        return Undefined();    case Onchange:      if (isSafeScript(exec))        return getListener(exec,DOM::EventImpl::CHANGE_EVENT);      else        return Undefined();    case Onclick:      if (isSafeScript(exec))        return getListener(exec,DOM::EventImpl::KHTML_CLICK_EVENT);      else        return Undefined();    case Ondblclick:      if (isSafeScript(exec))        return getListener(exec,DOM::EventImpl::KHTML_DBLCLICK_EVENT);      else        return Undefined();    case Ondragdrop:      if (isSafeScript(exec))        return getListener(exec,DOM::EventImpl::KHTML_DRAGDROP_EVENT);      else        return Undefined();    case Onerror:      if (isSafeScript(exec))        return getListener(exec,DOM::EventImpl::KHTML_ERROR_EVENT);      else        return Undefined();    case Onfocus:      if (isSafeScript(exec))        return getListener(exec,DOM::EventImpl::FOCUS_EVENT);      else        return Undefined();    case Onkeydown:      if (isSafeScript(exec))        return getListener(exec,DOM::EventImpl::KEYDOWN_EVENT);      else        return Undefined();    case Onkeypress:      if (isSafeScript(exec))        return getListener(exec,DOM::EventImpl::KEYPRESS_EVENT);      else        return Undefined();    case Onkeyup:      if (isSafeScript(exec))        return getListener(exec,DOM::EventImpl::KEYUP_EVENT);      else        return Undefined();    case Onload:      if (isSafeScript(exec))        return getListener(exec,DOM::EventImpl::LOAD_EVENT);      else        return Undefined();    case Onmousedown:      if (isSafeScript(exec))        return getListener(exec,DOM::EventImpl::MOUSEDOWN_EVENT);      else        return Undefined();    case Onmousemove:      if (isSafeScript(exec))        return getListener(exec,DOM::EventImpl::MOUSEMOVE_EVENT);      else        return Undefined();    case Onmouseout:      if (isSafeScript(exec))        return getListener(exec,DOM::EventImpl::MOUSEOUT_EVENT);      else        return Undefined();    case Onmouseover:      if (isSafeScript(exec))        return getListener(exec,DOM::EventImpl::MOUSEOVER_EVENT);      else        return Undefined();    case Onmouseup:      if (isSafeScript(exec))        return getListener(exec,DOM::EventImpl::MOUSEUP_EVENT);      else        return Undefined();    case Onmove:      if (isSafeScript(exec))        return getListener(exec,DOM::EventImpl::KHTML_MOVE_EVENT);      else        return Undefined();    case Onreset:      if (isSafeScript(exec))        return getListener(exec,DOM::EventImpl::RESET_EVENT);      else        return Undefined();    case Onresize:      if (isSafeScript(exec))        return getListener(exec,DOM::EventImpl::RESIZE_EVENT);      else        return Undefined();    case Onscroll:        if (isSafeScript(exec))            return getListener(exec,DOM::EventImpl::SCROLL_EVENT);        else            return Undefined();#if APPLE_CHANGES    case Onsearch:        if (isSafeScript(exec))            return getListener(exec,DOM::EventImpl::SEARCH_EVENT);        else            return Undefined();#endif    case Onselect:      if (isSafeScript(exec))        return getListener(exec,DOM::EventImpl::SELECT_EVENT);      else        return Undefined();    case Onsubmit:      if (isSafeScript(exec))        return getListener(exec,DOM::EventImpl::SUBMIT_EVENT);      else        return Undefined();    case Onunload:      if (isSafeScript(exec))        return getListener(exec,DOM::EventImpl::UNLOAD_EVENT);      else        return Undefined();    }  }  KHTMLPart *kp = m_part->findFrame( p.qstring() );  if (kp)    return Value(retrieve(kp));  // allow window[1] or parent[1] etc. (#56983)  bool ok;  unsigned int i = p.toArrayIndex(&ok);  if (ok) {    QPtrList<KParts::ReadOnlyPart> frames = m_part->frames();    unsigned int len = frames.count();    if (i < len) {      KParts::ReadOnlyPart* frame = frames.at(i);      if (frame && frame->inherits("KHTMLPart")) {	KHTMLPart *khtml = static_cast<KHTMLPart*>(frame);	return Window::retrieve(khtml);      }    }  }  // allow shortcuts like 'Image1' instead of document.images.Image1  if (isSafeScript(exec) &&      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(exec,element);    }  }  // This isn't necessarily a bug. Some code uses if(!window.blah) window.blah=1  // But it can also mean something isn't loaded or implemented, hence the WARNING to help grepping.#ifdef KJS_VERBOSE  kdDebug(6070) << "WARNING: Window::get property not found: " << p.qstring() << endl;#endif  return Undefined();}void Window::put(ExecState* exec, const Identifier &propertyName, const Value &value, int attr){  // Called by an internal KJS call (e.g. InterpreterImp's constructor) ?

⌨️ 快捷键说明

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