Right now $$ returns a static (non-live) NodeList, but we want to use array functions on it. Let’s make it work.
third_party/WebKit/Source/core/inspector/InjectedScriptSource.js
var res;
if (this._canQuerySelectorOnNode(opt_startNode))
res = opt_startNode.querySelectorAll(selector);
else
res = inspectedWindow.document.querySelectorAll(selector);
return slice(res);Wouldn’t it be fun if we could do `textarea.textContent` and it’d return the value? And have a setter as well?
third_party/WebKit/Source/core/html
// HTMLTextAreaElement.idl
[TreatNullAs=NullString] attribute DOMString textContent;
// HTMLTextAreaElement.h
virtual String textContent() const;
void setTextContent(const String&, TextFieldEventBehavior = DispatchNoEvent);
// HTMLTextAreaElement.cpp
String HTMLTextAreaElement::textContent() const
{
return value();
}
void HTMLTextAreaElement::setTextContent(const String& value, TextFieldEventBehavior eventBehavior) {
return setValue(value, eventBehavior);
}ES7 defines Array..include, but it’s not in v8 yet. Let’s implement it!
v8/src/array.js
function ArrayIncludes(element) {
CHECK_OBJECT_COERCIBLE(this, "Array.prototype.includes");
var length = TO_UINT32(this.length);
if (length == 0) return false;
var start = 0;
if (%_ArgumentsLength() > 1) {
start = %_Arguments(1);
start = ToInteger(start);
if (start < 0) {
start = $max(length + start, 0);
}
}
if (start >= length) {
return false;
}
for (var i = start; i < length; i += 1) {
if (SameValueZero(this[i], element)) {
return true;
}
}
return false;
}