本文整理汇总了C++中HTMLCollection::item方法的典型用法代码示例。如果您正苦于以下问题:C++ HTMLCollection::item方法的具体用法?C++ HTMLCollection::item怎么用?C++ HTMLCollection::item使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类HTMLCollection
的用法示例。
在下文中一共展示了HTMLCollection::item方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: forms
void WebDocument::forms(WebVector<WebFormElement>& results) const {
HTMLCollection* forms =
const_cast<Document*>(constUnwrap<Document>())->forms();
size_t sourceLength = forms->length();
Vector<WebFormElement> temp;
temp.reserveCapacity(sourceLength);
for (size_t i = 0; i < sourceLength; ++i) {
Element* element = forms->item(i);
// Strange but true, sometimes node can be 0.
if (element && element->isHTMLElement())
temp.append(WebFormElement(toHTMLFormElement(element)));
}
results.assign(temp);
}
示例2: imageElement
HTMLImageElement* HTMLMapElement::imageElement()
{
HTMLCollection* images = document()->images();
for (unsigned i = 0; Node* curr = images->item(i); i++) {
if (!curr->hasTagName(imgTag))
continue;
// The HTMLImageElement's useMap() value includes the '#' symbol at the beginning,
// which has to be stripped off.
HTMLImageElement* imageElement = static_cast<HTMLImageElement*>(curr);
String useMapName = imageElement->getAttribute(usemapAttr).string().substring(1);
if (equalIgnoringCase(useMapName, m_name))
return imageElement;
}
return 0;
}
示例3: insertCell
HTMLElement* HTMLTableRowElement::insertCell(int index,
ExceptionState& exceptionState) {
HTMLCollection* children = cells();
int numCells = children ? children->length() : 0;
if (index < -1 || index > numCells) {
exceptionState.throwDOMException(
IndexSizeError, "The value provided (" + String::number(index) +
") is outside the range [-1, " +
String::number(numCells) + "].");
return nullptr;
}
HTMLTableCellElement* cell = HTMLTableCellElement::create(tdTag, document());
if (numCells == index || index == -1)
appendChild(cell, exceptionState);
else
insertBefore(cell, children->item(index), exceptionState);
return cell;
}
示例4: encode
// HTMLCollections are strange objects, they support both get and call,
// so that document.forms.item(0) and document.forms(0) both work.
static EncodedJSValue JSC_HOST_CALL callHTMLCollection(ExecState* exec)
{
if (exec->argumentCount() < 1)
return JSValue::encode(jsUndefined());
// Do not use thisObj here. It can be the JSHTMLDocument, in the document.forms(i) case.
JSHTMLCollection* jsCollection = static_cast<JSHTMLCollection*>(exec->callee());
HTMLCollection* collection = jsCollection->impl();
// Also, do we need the TypeError test here ?
if (exec->argumentCount() == 1) {
// Support for document.all(<index>) etc.
bool ok;
UString string = exec->argument(0).toString(exec);
unsigned index = Identifier::toUInt32(string, ok);
if (ok)
return JSValue::encode(toJS(exec, jsCollection->globalObject(), collection->item(index)));
// Support for document.images('<name>') etc.
return JSValue::encode(getNamedItems(exec, jsCollection, Identifier(exec, string)));
}
// The second arg, if set, is the index of the item we want
bool ok;
UString string = exec->argument(0).toString(exec);
unsigned index = Identifier::toUInt32(exec->argument(1).toString(exec), ok);
if (ok) {
String pstr = ustringToString(string);
Node* node = collection->namedItem(pstr);
while (node) {
if (!index)
return JSValue::encode(toJS(exec, jsCollection->globalObject(), node));
node = collection->nextNamedItem(pstr);
--index;
}
}
return JSValue::encode(jsUndefined());
}
示例5: jsUndefined
// HTMLCollections are strange objects, they support both get and call,
// so that document.forms.item(0) and document.forms(0) both work.
static JSValue JSC_HOST_CALL callHTMLCollection(ExecState* exec, JSObject* function, JSValue, const ArgList& args)
{
if (args.size() < 1)
return jsUndefined();
// Do not use thisObj here. It can be the JSHTMLDocument, in the document.forms(i) case.
JSHTMLCollection* jsCollection = static_cast<JSHTMLCollection*>(function);
HTMLCollection* collection = jsCollection->impl();
// Also, do we need the TypeError test here ?
if (args.size() == 1) {
// Support for document.all(<index>) etc.
bool ok;
UString string = args.at(0).toString(exec);
unsigned index = string.toUInt32(&ok, false);
if (ok)
return toJS(exec, jsCollection->globalObject(), collection->item(index));
// Support for document.images('<name>') etc.
return getNamedItems(exec, jsCollection, Identifier(exec, string));
}
// The second arg, if set, is the index of the item we want
bool ok;
UString string = args.at(0).toString(exec);
unsigned index = args.at(1).toString(exec).toUInt32(&ok, false);
if (ok) {
String pstr = string;
Node* node = collection->namedItem(pstr);
while (node) {
if (!index)
return toJS(exec, jsCollection->globalObject(), node);
node = collection->nextNamedItem(pstr);
--index;
}
}
return jsUndefined();
}
示例6: deleteCell
void HTMLTableRowElement::deleteCell(int index,
ExceptionState& exceptionState) {
HTMLCollection* children = cells();
int numCells = children ? children->length() : 0;
// 1. If index is less than −1 or greater than or equal to the number of
// elements in the cells collection, then throw "IndexSizeError".
if (index < -1 || index >= numCells) {
exceptionState.throwDOMException(
IndexSizeError, "The value provided (" + String::number(index) +
") is outside the range [0, " +
String::number(numCells) + ").");
return;
}
// 2. If index is −1, remove the last element in the cells collection
// from its parent, or do nothing if the cells collection is empty.
if (index == -1) {
if (numCells == 0)
return;
index = numCells - 1;
}
// 3. Remove the indexth element in the cells collection from its parent.
Element* cell = children->item(index);
HTMLElement::removeChild(cell, exceptionState);
}
示例7: toLocalFrame
void V8Window::namedPropertyGetterCustom(
const AtomicString& name,
const v8::PropertyCallbackInfo<v8::Value>& info) {
DOMWindow* window = V8Window::toImpl(info.Holder());
if (!window)
return;
Frame* frame = window->frame();
// window is detached from a frame.
if (!frame)
return;
// Note that the spec doesn't allow any cross-origin named access to the
// window object. However, UAs have traditionally allowed named access to
// named child browsing contexts, even across origins. So first, search child
// frames for a frame with a matching name.
Frame* child = frame->tree().scopedChild(name);
if (child) {
v8SetReturnValueFast(info, child->domWindow(), window);
return;
}
// If the frame is remote, the caller will never be able to access further
// named results.
if (!frame->isLocalFrame())
return;
// Search named items in the document.
Document* doc = toLocalFrame(frame)->document();
if (!doc || !doc->isHTMLDocument())
return;
// This is an AllCanRead interceptor. Check that the caller has access to the
// named results.
if (!BindingSecurity::shouldAllowAccessTo(
currentDOMWindow(info.GetIsolate()), window,
BindingSecurity::ErrorReportOption::DoNotReport))
return;
bool hasNamedItem = toHTMLDocument(doc)->hasNamedItem(name);
bool hasIdItem = doc->hasElementWithId(name);
if (!hasNamedItem && !hasIdItem)
return;
if (!hasNamedItem && hasIdItem &&
!doc->containsMultipleElementsWithId(name)) {
v8SetReturnValueFast(info, doc->getElementById(name), window);
return;
}
HTMLCollection* items = doc->windowNamedItems(name);
if (!items->isEmpty()) {
// TODO(esprehn): Firefox doesn't return an HTMLCollection here if there's
// multiple with the same name, but Chrome and Safari does. What's the
// right behavior?
if (items->hasExactlyOneItem()) {
v8SetReturnValueFast(info, items->item(0), window);
return;
}
v8SetReturnValueFast(info, items, window);
return;
}
}