📄 htmlanchorelement.cpp
字号:
// this link case EditableLinkLiveWhenNotFocused: if (down && document()->frame() && document()->frame()->selection() && document()->frame()->selection()->rootEditableElement() == rootEditableElement()) return; break; case EditableLinkOnlyLiveWithShiftKey: return; } } ContainerNode::setActive(down, pause);}void HTMLAnchorElement::parseMappedAttribute(MappedAttribute *attr){ if (attr->name() == hrefAttr) { bool wasLink = isLink(); setIsLink(!attr->isNull()); if (wasLink != isLink()) setChanged(); if (isLink()) { String parsedURL = parseURL(attr->value()); if (document()->isDNSPrefetchEnabled()) { if (protocolIs(parsedURL, "http") || protocolIs(parsedURL, "https") || parsedURL.startsWith("//")) prefetchDNS(document()->completeURL(parsedURL).host()); } if (document()->page() && !document()->page()->javaScriptURLsAreAllowed() && protocolIs(parsedURL, "javascript")) { setIsLink(false); attr->setValue(nullAtom); } } } else if (attr->name() == nameAttr || attr->name() == titleAttr || attr->name() == relAttr) { // Do nothing. } else HTMLElement::parseMappedAttribute(attr);}void HTMLAnchorElement::accessKeyAction(bool sendToAnyElement){ // send the mouse button events if the caller specified sendToAnyElement dispatchSimulatedClick(0, sendToAnyElement);}bool HTMLAnchorElement::isURLAttribute(Attribute *attr) const{ return attr->name() == hrefAttr;}bool HTMLAnchorElement::canStartSelection() const{ // FIXME: We probably want this same behavior in SVGAElement too if (!isLink()) return HTMLElement::canStartSelection(); return isContentEditable();}const AtomicString& HTMLAnchorElement::accessKey() const{ return getAttribute(accesskeyAttr);}void HTMLAnchorElement::setAccessKey(const AtomicString& value){ setAttribute(accesskeyAttr, value);}const AtomicString& HTMLAnchorElement::charset() const{ return getAttribute(charsetAttr);}void HTMLAnchorElement::setCharset(const AtomicString& value){ setAttribute(charsetAttr, value);}const AtomicString& HTMLAnchorElement::coords() const{ return getAttribute(coordsAttr);}void HTMLAnchorElement::setCoords(const AtomicString& value){ setAttribute(coordsAttr, value);}KURL HTMLAnchorElement::href() const{ return document()->completeURL(getAttribute(hrefAttr));}void HTMLAnchorElement::setHref(const AtomicString& value){ setAttribute(hrefAttr, value);}const AtomicString& HTMLAnchorElement::hreflang() const{ return getAttribute(hreflangAttr);}void HTMLAnchorElement::setHreflang(const AtomicString& value){ setAttribute(hreflangAttr, value);}const AtomicString& HTMLAnchorElement::name() const{ return getAttribute(nameAttr);}void HTMLAnchorElement::setName(const AtomicString& value){ setAttribute(nameAttr, value);}const AtomicString& HTMLAnchorElement::rel() const{ return getAttribute(relAttr);}void HTMLAnchorElement::setRel(const AtomicString& value){ setAttribute(relAttr, value);}const AtomicString& HTMLAnchorElement::rev() const{ return getAttribute(revAttr);}void HTMLAnchorElement::setRev(const AtomicString& value){ setAttribute(revAttr, value);}const AtomicString& HTMLAnchorElement::shape() const{ return getAttribute(shapeAttr);}void HTMLAnchorElement::setShape(const AtomicString& value){ setAttribute(shapeAttr, value);}short HTMLAnchorElement::tabIndex() const{ // Skip the supportsFocus check in HTMLElement. return Element::tabIndex();}String HTMLAnchorElement::target() const{ return getAttribute(targetAttr);}void HTMLAnchorElement::setTarget(const AtomicString& value){ setAttribute(targetAttr, value);}const AtomicString& HTMLAnchorElement::type() const{ return getAttribute(typeAttr);}void HTMLAnchorElement::setType(const AtomicString& value){ setAttribute(typeAttr, value);}String HTMLAnchorElement::hash() const{ String ref = href().ref(); return ref.isEmpty() ? "" : "#" + ref;}String HTMLAnchorElement::host() const{ return href().host();}String HTMLAnchorElement::hostname() const{ const KURL& url = href(); if (url.port() == 0) return url.host(); return url.host() + ":" + String::number(url.port());}String HTMLAnchorElement::pathname() const{ return href().path();}String HTMLAnchorElement::port() const{ return String::number(href().port());}String HTMLAnchorElement::protocol() const{ return href().protocol() + ":";}String HTMLAnchorElement::search() const{ String query = href().query(); return query.isEmpty() ? "" : "?" + query;}String HTMLAnchorElement::text() const{ return innerText();}String HTMLAnchorElement::toString() const{ return href().string();}bool HTMLAnchorElement::isLiveLink() const{ if (!isLink()) return false; if (!isContentEditable()) return true; EditableLinkBehavior editableLinkBehavior = EditableLinkDefaultBehavior; if (Settings* settings = document()->settings()) editableLinkBehavior = settings->editableLinkBehavior(); switch(editableLinkBehavior) { default: case EditableLinkDefaultBehavior: case EditableLinkAlwaysLive: return true; case EditableLinkNeverLive: return false; // Don't set the link to be live if the current selection is in the same editable block as // this link or if the shift key is down case EditableLinkLiveWhenNotFocused: return m_wasShiftKeyDownOnMouseDown || m_rootEditableElementForSelectionOnMouseDown != rootEditableElement(); case EditableLinkOnlyLiveWithShiftKey: return m_wasShiftKeyDownOnMouseDown; }}}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -