本文整理汇总了C++中HTMLElement::attributes方法的典型用法代码示例。如果您正苦于以下问题:C++ HTMLElement::attributes方法的具体用法?C++ HTMLElement::attributes怎么用?C++ HTMLElement::attributes使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类HTMLElement
的用法示例。
在下文中一共展示了HTMLElement::attributes方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: isCharsetSpecifyingNode
static bool isCharsetSpecifyingNode(Node* node)
{
if (!node->isHTMLElement())
return false;
HTMLElement* element = toHTMLElement(node);
if (!element->hasTagName(HTMLNames::metaTag))
return false;
HTMLMetaCharsetParser::AttributeList attributes;
const NamedNodeMap* attributesMap = element->attributes(true);
for (unsigned i = 0; i < attributesMap->length(); ++i) {
Attribute* item = attributesMap->attributeItem(i);
// FIXME: We should deal appropriately with the attribute if they have a namespace.
attributes.append(make_pair(item->name().toString(), item->value().string()));
}
TextEncoding textEncoding = HTMLMetaCharsetParser::encodingFromMetaAttributes(attributes);
return textEncoding.isValid();
}
示例2: updateWidget
void RenderPartObject::updateWidget(bool onlyCreateNonNetscapePlugins)
{
String url;
String serviceType;
Vector<String> paramNames;
Vector<String> paramValues;
Frame* frame = m_view->frame();
if (element()->hasTagName(objectTag)) {
HTMLObjectElement* o = static_cast<HTMLObjectElement*>(element());
o->setNeedWidgetUpdate(false);
if (!o->isFinishedParsingChildren())
return;
// Check for a child EMBED tag.
HTMLEmbedElement* embed = 0;
for (Node* child = o->firstChild(); child;) {
if (child->hasTagName(embedTag)) {
embed = static_cast<HTMLEmbedElement*>(child);
break;
} else if (child->hasTagName(objectTag))
child = child->nextSibling(); // Don't descend into nested OBJECT tags
else
child = child->traverseNextNode(o); // Otherwise descend (EMBEDs may be inside COMMENT tags)
}
// Use the attributes from the EMBED tag instead of the OBJECT tag including WIDTH and HEIGHT.
HTMLElement *embedOrObject;
if (embed) {
embedOrObject = (HTMLElement *)embed;
url = embed->url();
serviceType = embed->serviceType();
} else
embedOrObject = (HTMLElement *)o;
// If there was no URL or type defined in EMBED, try the OBJECT tag.
if (url.isEmpty())
url = o->m_url;
if (serviceType.isEmpty())
serviceType = o->m_serviceType;
HashSet<StringImpl*, CaseFoldingHash> uniqueParamNames;
// Scan the PARAM children.
// Get the URL and type from the params if we don't already have them.
// Get the attributes from the params if there is no EMBED tag.
Node *child = o->firstChild();
while (child && (url.isEmpty() || serviceType.isEmpty() || !embed)) {
if (child->hasTagName(paramTag)) {
HTMLParamElement* p = static_cast<HTMLParamElement*>(child);
String name = p->name().lower();
if (url.isEmpty() && (name == "src" || name == "movie" || name == "code" || name == "url"))
url = p->value();
if (serviceType.isEmpty() && name == "type") {
serviceType = p->value();
int pos = serviceType.find(";");
if (pos != -1)
serviceType = serviceType.left(pos);
}
if (!embed && !name.isEmpty()) {
uniqueParamNames.add(p->name().impl());
paramNames.append(p->name());
paramValues.append(p->value());
}
}
child = child->nextSibling();
}
// When OBJECT is used for an applet via Sun's Java plugin, the CODEBASE attribute in the tag
// points to the Java plugin itself (an ActiveX component) while the actual applet CODEBASE is
// in a PARAM tag. See <http://java.sun.com/products/plugin/1.2/docs/tags.html>. This means
// we have to explicitly suppress the tag's CODEBASE attribute if there is none in a PARAM,
// else our Java plugin will misinterpret it. [4004531]
String codebase;
if (!embed && MIMETypeRegistry::isJavaAppletMIMEType(serviceType)) {
codebase = "codebase";
uniqueParamNames.add(codebase.impl()); // pretend we found it in a PARAM already
}
// Turn the attributes of either the EMBED tag or OBJECT tag into arrays, but don't override PARAM values.
NamedAttrMap* attributes = embedOrObject->attributes();
if (attributes) {
for (unsigned i = 0; i < attributes->length(); ++i) {
Attribute* it = attributes->attributeItem(i);
const AtomicString& name = it->name().localName();
if (embed || !uniqueParamNames.contains(name.impl())) {
paramNames.append(name.string());
paramValues.append(it->value().string());
}
}
}
// If we still don't have a type, try to map from a specific CLASSID to a type.
if (serviceType.isEmpty() && !o->m_classId.isEmpty())
mapClassIdToServiceType(o->m_classId, serviceType);
if (!isURLAllowed(document(), url))
return;
//.........这里部分代码省略.........