c# convert pdf to image free library : Extract data from pdf form to excel SDK control service wpf web page html dnn print9-part2146

If a reflecting IDL attribute has a floating-point number type (double
orunrestricted double
), then, on getting, the content attribute must be
parsed according to therules for parsing floating-point number valuesp67
, and if that is successful, the resulting value must be returned. If, on the
other hand, it fails, or if the attribute is absent, the default value must be returned instead, or 0.0 if there is no default value. On setting, the given
value must be converted to thebest representation of the number as a floating-point numberp67
and then that string must be used as the new
content attribute value.
If a reflecting IDL attribute has a floating-point number type (double
orunrestricted double
) that islimited to numbers greater than zero,
then the behaviour is similar to the previous case, but zero and negative values are not allowed. On getting, the content attribute must be parsed
according to therules for parsing floating-point number valuesp67
, and if that is successful and the value is greater than 0.0, the resulting value must
be returned. If, on the other hand, it fails or returns an out of range value, or if the attribute is absent, the default value must be returned instead, or
0.0 if there is no default value. On setting, if the value is less than or equal to zero, then the value must be ignored. Otherwise, the given value must
be converted to thebest representation of the number as a floating-point numberp67
and then that string must be used as the new content attribute
value.
If a reflecting IDL attribute has the typeDOMTokenList
, then on getting it must return aDOMTokenList
object whose associated element is the
element in question and whose associated attribute's local name is the name of the attribute in question.
If a reflecting IDL attribute has the typeHTMLElementp113
, or an interface that descends fromHTMLElementp113
, then, on getting, it must run the
following algorithm (stopping at the first point where a value is returned):
1. If the corresponding content attribute is absent, then the IDL attribute must return null.
2. Letcandidatebe the element that thedocument.getElementById()
method would find when called on the content attribute's
element'snode document
if it were passed as its argument the current value of the corresponding content attribute.
3. Ifcandidateis null, or if it is not type-compatible with the IDL attribute, then the IDL attribute must return null.
4. Otherwise, it must returncandidate.
On setting, if the given element has anidp122
attribute, and has the sametree
as the element of the attribute being set, and the given element is
the first element in thattree
whoseID
is the value of thatidp122
attribute, then the content attribute must be set to the value of thatidp122
attribute.
Otherwise, the content attribute must be set to the empty string.
TheHTMLFormControlsCollectionp93
andHTMLOptionsCollectionp94
interfaces arecollections
derived from theHTMLCollection
interface. TheHTMLAllCollectionp91
interface is acollection
, but is not so derived.
2.7.2.1 TheHTMLAllCollectionp91
interface
TheHTMLAllCollectionp91
interface is used for the legacydocument.allp1124
attribute. It operates similarly toHTMLCollection
; the main
differences are that it allows a staggering variety of different (ab)uses of its methods to all end up returning something, and that it can be called as a
function as an alternative to property access.
[LegacyUnenumerableNamedProperties]
interface HTMLAllCollection {
readonly attribute unsigned long length
;
getter Element
? (unsigned long index);
getter (HTMLCollection
or Element
)? namedItem
(DOMString name);
legacycaller (HTMLCollection
or Element
)? item
(optional DOMString nameOrIndex);
};
The values Infinity and Not-a-Number (NaN) values throw an exception on setting, as defined in the Web IDL specification.[WEBIDL]p1164
Note
AllHTMLAllCollectionp91
objects are rooted at aDocumentp103
and have a filter that matches all elements, so the elements
represented by the collection
of anHTMLAllCollectionp91
object consist of all the descendant elements of the rootDocumentp103
.
Note
IDL
2.7.2 Collections
91
Extract data from pdf form to excel - extract form data from PDF in C#.net, ASP.NET, MVC, Ajax, WPF
Help to Read and Extract Field Data from PDF with a Convenient C# Solution
pdf form data extraction; extract data from pdf c#
Extract data from pdf form to excel - VB.NET PDF Form Data Read library: extract form data from PDF in vb.net, ASP.NET, MVC, Ajax, WPF
Convenient VB.NET Solution to Read and Extract Field Data from PDF
extracting data from pdf forms to excel; how to save pdf form data in reader
The object'ssupported property indices
are as defined forHTMLCollection
objects.
Thesupported property names
consist of the non-empty values of all theidp122
attributes of all the elementsrepresented by the collection
, and the
non-empty values of all thenameattributes of all the"all"-named elementsp92
represented by the collection
, intree order
, ignoring later duplicates,
with theidp122
of an element preceding itsnameif it contributes both, they differ from each other, and neither is the duplicate of an earlier entry.
On getting, thelengthattribute must return the number of nodesrepresented by the collection
.
The indexed property getter must return the result ofgetting the "all"-indexed elementp92
from thisHTMLAllCollectionp91
given the passed
index.
ThenamedItem(name)method must return the result ofgetting the "all"-named element(s)p92
from thisHTMLAllCollectionp91
givenname.
Theitem(nameOrIndex)method (and thelegacycallerbehavior) must run the following steps:
1. IfnameOrIndexwas not provided, return null.
2. IfnameOrIndex,converted
to a JavaScript string value, is anarray index property name
, return the result ofgetting the "all"-indexed
elementp92
from thisHTMLAllCollectionp91
given the number represented bynameOrIndex.
3. Return the result ofgetting the "all"-named element(s)p92
from thisHTMLAllCollectionp91
givennameOrIndex.
The following elements are"all"-named elements:ap207
,appletp1111
,buttonp476
,embedp315
,formp429
,framep1115
,framesetp1114
,
iframep308
,imgp280
,inputp434
,mapp386
,metap143
,objectp318
,selectp479
, andtextareap489
Toget the "all"-indexed elementfrom anHTMLAllCollectionp91
collectiongiven an indexindex, return theindex
th
element incollection, or null
if there is no suchindex
th
element.
Toget the "all"-named element(s)from anHTMLAllCollectionp91
collectiongiven a namename, perform the following steps:
1. Ifnameis the empty string, return null.
2. LetsubCollectionbe anHTMLCollection
object rooted at the sameDocumentp103
ascollection, whose filter matches only elements
that are either:
collection.lengthp92
Returns the number of elements in the collection.
element=collection.itemp92(index)
element=collection(index)
element=collection[index]
Returns the item with indexindexfrom the collection (determined bytree order
).
element=collection.itemp92(name)
collection=collection.itemp92(name)
element=collection.namedItemp92(name)
collection=collection.namedItemp92(name)
element=collection(name)
collection=collection(name)
element=collection[name]
collection=collection[name]
Returns the item withID
or namenamefrom the collection.
If there are multiple matching items, then anHTMLCollection
object containing all those elements is returned.
Onlybuttonp476
,formp429
,iframep308
,inputp434
,mapp386
,metap143
,objectp318
,selectp479
, andtextareap489
elements can
have a name for the purpose of this method; their name is given by the value of theirnameattribute.
Note
92
VB.NET PDF Form Data fill-in library: auto fill-in PDF form data
Image: Insert Image to PDF. Image: Remove Image from PDF Page. Image: Copy, Paste, Cut Image in Page. Data: Read, Extract Field Data. Data: Auto Fill-in Field
flatten pdf form in reader; edit pdf form in reader
C# PDF Form Data fill-in Library: auto fill-in PDF form data in C#
Able to fill out all PDF form field in C#.NET. RasterEdge XDoc.PDF SDK package provides PDF field processing features for learn how to fill-in field data to PDF
how to extract data from pdf to excel; how to flatten a pdf form in reader
◦ "all"-named elementsp92
with anameattribute equal toname, or,
◦ elements with anID
equal toname.
3. If there is exactly one element insubCollection, then return that element.
4. Otherwise, ifsubCollectionis empty, return null.
5. Otherwise, returnsubCollection.
2.7.2.2 TheHTMLFormControlsCollectionp93
interface
TheHTMLFormControlsCollectionp93
interface is used forcollections
oflisted elementsp428
informp429
elements.
interface HTMLFormControlsCollection : HTMLCollection
{
// inherits length
and item
()
getter (RadioNodeList
or Element
)? namedItem
(DOMString name); // shadows inherited namedItem()
};
interface RadioNodeList : NodeList
{
attribute DOMString value
;
};
The object'ssupported property indices
are as defined forHTMLCollection
objects.
Thesupported property names
consist of the non-empty values of all theidp122
andnamep510
attributes of all the elementsrepresented by the
collection
, intree order
, ignoring later duplicates, with theidp122
of an element preceding itsnamep510
if it contributes both, they differ from each
other, and neither is the duplicate of an earlier entry.
ThenamedItem(name)method must act according to the following algorithm:
1. Ifnameis the empty string, return null and stop the algorithm.
2. If, at the time the method is called, there is exactly one node in the collection that has either anidp122
attribute or anamep510
attribute
equal toname, then return that node and stop the algorithm.
collection.length
Returns the number of elements in the collection.
element=collection.item(index)
element=collection[index]
Returns the item with indexindexfrom the collection. The items are sorted intree order
.
element=collection.namedItemp93(name)
radioNodeList=collection.namedItemp93(name)
element=collection[name]
radioNodeList=collection[name]
Returns the item withID
ornamep510
namefrom the collection.
If there are multiple matching items, then aRadioNodeListp93
object containing all those elements is returned.
radioNodeList.value[ =value]
Returns the value of the first checked radio button represented by the object.
Can be set, to check the first radio button with the given value represented by the object.
Note
IDL
93
VB.NET PDF Text Extract Library: extract text content from PDF
Extract highlighted text out of PDF document. Enable extracting PDF text to another PDF file, and other formats such as TXT and SVG form.
extract table data from pdf; exporting pdf data to excel
C# PDF Image Extract Library: Select, copy, paste PDF images in C#
Studio .NET. Extract various types of image from PDF file, like XObject Image, XObject Form, Inline Image, etc. Support .NET WinForms
how to save a pdf form in reader; extract data from pdf into excel
3. Otherwise, if there are no nodes in the collection that have either anidp122
attribute or anamep510
attribute equal toname, then return
null and stop the algorithm.
4. Otherwise, create a newRadioNodeListp93
object representing alivep44
view of theHTMLFormControlsCollectionp93
object,
further filtered so that the only nodes in theRadioNodeListp93
object are those that have either anidp122
attribute or anamep510
attribute equal toname. The nodes in theRadioNodeListp93
object must be sorted intree order
.
5. Return thatRadioNodeListp93
object.
Members of theRadioNodeListp93
interface inherited from theNodeList
interface must behave as they would on aNodeList
object.
ThevalueIDL attribute on theRadioNodeListp93
object, on getting, must return the value returned by running the following steps:
1. Letelementbe the first element intree order
represented by theRadioNodeListp93
object that is aninputp434
element whose
typep436
attribute is in theRadio Buttonp456
state and whosecheckednessp508
is true. Otherwise, let it be null.
2. Ifelementis null, return the empty string.
3. Ifelementis an element with novaluep438
attribute, return the string "on".
4. Otherwise, return the value ofelement'svaluep438
attribute.
On setting, thevaluep94
IDL attribute must run the following steps:
1. If the new value is the string "on": letelementbe the first element intree order
represented by theRadioNodeListp93
object that is an
inputp434
element whosetypep436
attribute is in theRadio Buttonp456
state and whosevaluep438
content attribute is either absent, or
present and equal to the new value, if any. If no such element exists, then instead letelementbe null.
Otherwise: letelementbe the first element intree order
represented by theRadioNodeListp93
object that is aninputp434
element
whosetypep436
attribute is in theRadio Buttonp456
state and whosevaluep438
content attribute is present and equal to the new value, if
any. If no such element exists, then instead letelementbe null.
2. Ifelementis not null, then set itscheckednessp508
to true.
2.7.2.3 TheHTMLOptionsCollectionp94
interface
TheHTMLOptionsCollectionp94
interface is used forcollections
ofoptionp486
elements. It is always rooted on aselectp479
element and has
attributes and methods that manipulate that element's descendants.
interface HTMLOptionsCollection : HTMLCollection
{
// inherits item
(), namedItem
()
attribute unsigned long length
; // shadows inherited length
[CEReactions
setter
void (unsigned long index, HTMLOptionElement
? option);
[CEReactions
] void add
((HTMLOptionElement
or HTMLOptGroupElement
) element, optional (HTMLElement
or
long)? before = null);
[CEReactions
] void remove
(long index);
attribute long selectedIndex
;
};
collection.lengthp95 [ =value]
Returns the number of elements in the collection.
When set to a smaller number, truncates the number ofoptionp486
elements in the corresponding container.
When set to a greater number, adds new blankoptionp486
elements to that container.
Note
IDL
94
VB.NET PDF Image Extract Library: Select, copy, paste PDF images
VB.NET. Extract multiple types of image from PDF file in VB.NET, like XObject Image, XObject Form, Inline Image, etc. Support .NET
how to extract data from pdf file using java; cannot save pdf form in reader
VB.NET Create PDF from Excel Library to convert xlsx, xls to PDF
Image: Insert Image to PDF. Image: Remove Image from PDF Page. Image: Copy, Paste, Cut Image in Page. Data: Read, Extract Field Data. Data: Auto Fill-in Field
vb extract data from pdf; pdf data extractor
The object'ssupported property indices
are as defined forHTMLCollection
objects.
On getting, thelengthattribute must return the number of nodesrepresented by the collection
.
On setting, the behaviour depends on whether the new value is equal to, greater than, or less than the number of nodesrepresented by the
collection
at that time. If the number is the same, then setting the attribute must do nothing. If the new value is greater, thennnewoptionp486
elements with no attributes and no child nodes must be appended to theselectp479
element on which theHTMLOptionsCollectionp94
is
rooted, wherenis the difference between the two numbers (new value minus old value). Mutation events must be fired as if aDocumentFragment
containing the newoptionp486
elements had been inserted. If the new value is lower, then the lastnnodes in the collection must be removed from
their parent nodes, wherenis the difference between the two numbers (old value minus new value).
Thesupported property names
consist of the non-empty values of all theidp122
andnamep1107
attributes of all the elementsrepresented by the
collection
, intree order
, ignoring later duplicates, with theidp122
of an element preceding itsnamep1107
if it contributes both, they differ from each
other, and neither is the duplicate of an earlier entry.
When the user agent is toset the value of a new indexed property or set the value of an existing indexed propertyfor a given property index
indexto a new valuevalue, it must run the following algorithm:
1. Ifvalueis null, invoke the steps for theremovep96
method withindexas the argument, and abort these steps.
2. Letlengthbe the number of nodesrepresented by the collection
.
3. Letnbeindexminuslength.
element=collection.item(index)
element=collection[index]
Returns the item with indexindexfrom the collection. The items are sorted intree order
.
collection[index] =element
Whenindexis a greater number than the number of items in the collection, adds new blankoptionp486
elements in the corresponding
container.
When set to null, removes the item at indexindexfrom the collection.
When set to anoptionp486
element, adds or replaces it at indexindexfrom the collection.
element=collection.namedItem(name)
element=collection[name]
Returns the item withID
ornamep1107
namefrom the collection.
If there are multiple matching items, then the first is returned.
collection.addp96(element[,before] )
Insertselementbefore the node given bybefore.
Thebeforeargument can be a number, in which caseelementis inserted before the item with that number, or an element from the
collection, in which caseelementis inserted before that element.
Ifbeforeis omitted, null, or a number out of range, thenelementwill be added at the end of the list.
This method will throw a"HierarchyRequestError"
DOMException
ifelementis an ancestor of the element into which it is to be
inserted.
collection.removep96(index)
Removes the item with indexindexfrom the collection.
collection.selectedIndexp96 [ =value]
Returns the index of the first selected item, if any, or −1 if there is no selected item.
Can be set, to change the selection.
Settinglengthp95
never removes or adds anyoptgroupp485
elements, and never adds new children to existingoptgroupp485
elements
(though it can remove children from them).
Note
95
C# PDF Text Extract Library: extract text content from PDF file in
XDoc.PDF ›› C# PDF: Extract PDF Text. C# PDF - Extract Text from PDF in C#.NET. Feel Free to Extract Text from PDF Page, Page Region or the Whole PDF File.
extract data from pdf using java; make pdf form editable in reader
C# Create PDF from Excel Library to convert xlsx, xls to PDF in C#
Create PDF from Excel. |. Home ›› XDoc.PDF ›› C# PDF: Create PDF from Excel. Export PDF from Excel with cell border or no border.
how to save fillable pdf form in reader; pdf form save with reader
4. Ifnis greater than zero, thenappend
aDocumentFragment
consisting ofn-1newoptionp486
elements with no attributes and no child
nodes to theselectp479
element on which theHTMLOptionsCollectionp94
is rooted.
5. Ifnis greater than or equal to zero,append
valueto theselectp479
element. Otherwise,replace
theindexth element in the collection by
value.
Theadd(element, before)method must act according to the following algorithm:
1. Ifelementis an ancestor of theselectp479
element on which theHTMLOptionsCollectionp94
is rooted, then throw a
"HierarchyRequestError"
DOMException
and abort these steps.
2. Ifbeforeis an element, but that element isn't a descendant of theselectp479
element on which theHTMLOptionsCollectionp94
is
rooted, then throw a"NotFoundError"
DOMException
and abort these steps.
3. Ifelementandbeforeare the same element, then return and abort these steps.
4. Ifbeforeis a node, then letreferencebe that node. Otherwise, ifbeforeis an integer, and there is abeforeth node in the collection, let
referencebe that node. Otherwise, letreferencebe null.
5. Ifreferenceis not null, letparentbe the parent node ofreference. Otherwise, letparentbe theselectp479
element on which the
HTMLOptionsCollectionp94
is rooted.
6. Pre-insert
elementintoparentnode beforereference.
Theremove(index)method must act according to the following algorithm:
1. If the number of nodesrepresented by the collection
is zero, abort these steps.
2. Ifindexis not a number greater than or equal to 0 and less than the number of nodesrepresented by the collection
, abort these steps.
3. Letelementbe theindexth element in the collection.
4. Removeelementfrom its parent node.
TheselectedIndexIDL attribute must act like the identically named attribute on theselectp479
element on which the
HTMLOptionsCollectionp94
is rooted
TheDOMStringMapp96
interface represents a set of name-value pairs. It exposes these using the scripting language's native mechanisms for
property access.
When aDOMStringMapp96
object is instantiated, it is associated with three algorithms, one forgetting the list of name-value pairs, one for
setting names to certain values(given anameandvalue), and one fordeleting names(given aname).
[OverrideBuiltins]
interface DOMStringMap {
getter
DOMString (DOMString name);
[CEReactions
setter
void (DOMString name, DOMString value);
[CEReactions
deleter
void (DOMString name);
};
Thesupported property names
on aDOMStringMapp96
object at any instant are the names of each pair returned from the algorithm forgetting the
list of name-value pairsp96
at that instant, in the order returned.
Todetermine the value of a named propertynamein aDOMStringMapp96
, the user agent must return the value component of the name-value
pair whose name component isnamein the list returned by the algorithm forgetting the list of name-value pairsp96
.
Tosetthe value of a named propertynameto valuevalue, the algorithm forsetting names to certain valuesp96
must be run, passingnameas the
name andvalueas the value.
IDL
2.7.3 TheDOMStringMapp96
interface
96
Todelete an existing named propertyname, the algorithm fordeleting namesp96
must be run, passingnameas the name.
There is animplied strong referencefrom any IDL attribute that returns a pre-existing object to that object.
2.8 Namespaces
TheHTML namespaceis:http://www.w3.org/1999/xhtml
TheMathML namespaceis:http://www.w3.org/1998/Math/MathML
TheSVG namespaceis:http://www.w3.org/2000/svg
TheXLink namespaceis:http://www.w3.org/1999/xlink
TheXML namespaceis:http://www.w3.org/XML/1998/namespace
TheXMLNS namespaceis:http://www.w3.org/2000/xmlns/
Data mining tools and other user agents that perform operations on content without running scripts, evaluating CSS or XPath expressions, or
otherwise exposing the resulting DOM to arbitrary content, may "support namespaces" by just asserting that their DOM node analogues are in
certain namespaces, without actually exposing the above strings.
Thedatasetp130
attribute on elements exposes thedata-*p130
attributes on the element.
Given the following fragment and elements with similar constructions:
<img class="tower" id="tower5" data-x="12" data-y="5"
data-ai="robotarget" data-hp="46" data-ability="flames"
src="towers/rocket.png" alt="Rocket Tower">
...one could imagine a functionsplashDamage()that takes some arguments, the first of which is the element to process:
function splashDamage(node, x, y, damage) {
if (node.classList.contains('tower') && // checking the 'class' attribute
node.dataset.x == x && // reading the 'data-x' attribute
node.dataset.y == y) { // reading the 'data-y' attribute
var hp = parseInt(node.dataset.hp); // reading the 'data-hp' attribute
hp = hp - damage;
if (hp < 0) {
hp = 0;
node.dataset.ai = 'dead'; // setting the 'data-ai' attribute
delete node.dataset.ability; // removing the 'data-ability' attribute
}
node.dataset.hp = hp; // setting the 'data-hp' attribute
}
}
Example
For example, thewindow.documentp759
attribute means that there is a strong reference from aWindowp758
object to itsDocumentp103
object. Similarly, there is always a strong reference from aDocumentp103
to any descendant nodes, and from any node to itsnode
document
.
Example
2.7.4 Garbage collection
97
2.9 Safe passing of structured data
This section uses the terminology and typographic conventions from the JavaScript specification.[JAVASCRIPT]p1161
Cloneable objectsp98
support being cloned acrossevent loopsp842
. That is, they support being cloned across document and worker boundaries,
including across documents of differentoriginsp767
. Not all objects arecloneable objectsp98
and not all aspects of objects that arecloneable
objectsp98
are necessarily preserved when cloned.
Platform objects
have the following internal method:
[[Clone]] (targetRealm,memory)
Unless specified otherwise, invoking the [[Clonep98
]] internal method must throw a"DataCloneError"
DOMException
. (By default,platform
objects
are notcloneable objectsp98
.)
Platform objects
that arecloneable objectsp98
have a [[Clonep98
]] internal method which is specified to run a series of steps. The result of running
those steps must be a thrown exception or a clone ofthis, created intargetRealm. It is up such objects to define what cloning means for them.
Objects defined in the JavaScript specification are handled by theStructuredClonep99
abstract operation directly.
Transferable objectsp98
support being transferred acrossevent loopsp842
. Transferring is effectively recreating the object while sharing a reference to
the underlying data and then detaching the object being transferred. This is useful to transfer ownership of expensive resources. Not all objects are
transferable objectsp98
and not all aspects of objects that aretransferable objectsp98
are necessarily preserved when transferred.
Platform objects
that aretransferable objectsp98
have a [[Detached]] internal slot and the following internal method:
[[Transfer]] (targetRealm)
Platform objects
that aretransferable objectsp98
must define the [[Transferp98
]] internal method such that it either throws an exception or returns a
clone ofthis, created intargetRealm, withthis's underlying data shared with the return value, andthis's [[Detachedp98
]] internal slot value set to
true. It is up to such objects to define what transfering means for them.
Objects defined in the JavaScript specification are handled by theStructuredCloneWithTransferp98
abstract operation directly. (Technically, by
IsTransferablep102
andTransferHelperp102
.)
1. Letmemorybe an empty map.
Inthe HTML syntaxp951
, namespace prefixes and namespace declarations do not have the same effect as in XML. For instance, the colon
has no special meaning in HTML element names.
Note
Transferring is an irreversible and non-idempotent operation. Once an object has been transferred, it cannot be transferred, or indeed
used, again.
Note
Whereas allplatform objects
have a [[Clonep98
]] internal method, not all have a [[Detachedp98
]] internal slot and a [[Transferp98
]] internal
method.
Note
2.9.1Cloneable objects
2.9.2Transferable objects
2.9.3StructuredCloneWithTransfer(input,transferList,targetRealm)
98
2. For each objecttransferableintransferList:
1. IfIsTransferablep102
(transferable) is false, then throw a"DataCloneError"
DOMException
.
2. Letplaceholderbe a user-agent-defined placeholder object.
3. Create an entry inmemorywith keytransferableand valueplaceholder.
3. Letclonebe the result of ?StructuredClonep99
(input,targetRealm,memory).
4. LetoutputTransferListbe a new emptyList
.
5. For each objecttransferableintransferList:
1. LetplaceholderResultbe the value of the entry inmemorywhose key istransferable.
2. LettransferResultbe ?TransferHelperp102
(transferable,targetRealm).
3. Withinclone, replace references toplaceholderResultwithtransferResult, such that everything holding a reference to
placeholderResult, now holds a reference totransferResult.
4. AddtransferResultas the last element ofoutputTransferList.
6. Return { [[Clone]]:clone, [[TransferList]]:outputTransferList}.
1. Ifmemorywas not supplied, letmemorybe an empty map.
2. Ifmemorycontains an entry with keyinput, then return that entry's value.
3. IfType
(input) is Undefined, Null, Boolean, String, or Number, then returninput.
4. IfType
(input) is Symbol, then throw a"DataCloneError"
DOMException
.
5. LetdeepClonebe false.
6. Ifinputhas a [[BooleanData]] internal slot, then letoutputbe a new Boolean object intargetRealmwhose [[BooleanData]] internal slot
value is the [[BooleanData]] internal slot value ofinput.
7. Otherwise, ifinputhas a [[NumberData]] internal slot, then letoutputbe a new Number object intargetRealmwhose [[NumberData]]
internal slot value is the [[NumberData]] internal slot value ofinput.
8. Otherwise, ifinputhas a [[StringData]] internal slot, then letoutputbe a new String object intargetRealmwhose [[StringData]] internal
slot value is the [[StringData]] internal slot value ofinput.
9. Otherwise, ifinputhas a [[DateValue]] internal slot, then letoutputbe a new Date object intargetRealmwhose [[DateValue]] internal slot
value is the [[DateValue]] internal slot value ofinput.
10. Otherwise, ifinputhas a [[RegExpMatcher]] internal slot, then letoutputbe a new RegExp object intargetRealmwhose
[[RegExpMatcher]] internal slot value is the [[RegExpMatcher]] internal slot value ofinput, whose [[OriginalSource]] internal slot value is
The purpose of thememorymap, both here and in theStructuredClonep99
abstract operation, is to avoid cloning objects twice.
This ends up preserving cycles and the identity of duplicate objects in graphs.
Note
This is a rather unusual low-level operation for which no primitives are defined by JavaScript.
Note
Originally theStructuredCloneWithTransferp98
abstract operation was known as the "structured clone" algorithm. TheStructuredClonep99
abstract operation was known as the "internal structured clone" algorithm. Transferring objects, now handled by the
StructuredCloneWithTransferp98
abstract operation, were formerly handled by parts of the algorithm of thepostMessage()p906
method on
theWindowp758
object and thepostMessage()p911
method on theMessagePortp910
object.
Note
2.9.4StructuredClone(input,targetRealm[ ,memory] )
99
the [[OriginalSource]] internal slot value ofinput, and whose whose [[OriginalFlags]] internal slot value is the [[OriginalFlags]] internal slot
value ofinput.
11. Otherwise, ifinputhas an [[ArrayBufferData]] internal slot, then:
1. IfIsDetachedBuffer
(input) is true, then throw a"DataCloneError"
DOMException
.
2. LetoutputArrayBufferbe the%ArrayBuffer%
intrinsic object intargetRealm.
3. Letoutputbe ?CloneArrayBuffer
(input, 0,outputArrayBuffer).
12. Otherwise, ifinputhas a [[ViewedArrayBuffer]] internal slot, then:
1. Letbufferbe the value ofinput's [[ViewedArrayBuffer]] internal slot.
2. LetbufferClonebe ?StructuredClonep99
(buffer,targetRealm,memory).
3. Ifinputhas a [[DataView]] internal slot, then letoutputbe a new DataView object intargetRealmwhose [[DataView]] internal
slot value is true, whose [[ViewedArrayBuffer]] internal slot value isbufferClone, whose [[ByteLength]] internal slot value is
the [[ByteLength]] internal slot value ofinput, and whose [[ByteOffset]] internal slot value is the [[ByteOffset]] internal slot
value ofinput.
4. Otherwise:
1. Assert:inputhas a [[TypedArrayName]] internal slot.
2. Letconstructorbe the intrinsic object listed in column one ofTheTypedArrayConstructors
table for the value of
input's [[TypedArrayName]] internal slot intargetRealm.
3. LetbyteOffsetbeinput's [[ByteOffset]] internal slot value.
4. Letlengthbeinput's [[ArrayLength]] internal slot value.
5. Letoutputbe ?TypedArrayCreate
(constructor, «bufferClone,byteOffset,length»).
13. Otherwise, ifinputhas [[MapData]] internal slot, then:
1. Letoutputbe a new Map object intargetRealmwhose [[MapData]] internal slot value is a new emptyList
.
2. SetdeepCloneto true.
14. Otherwise, ifinputhas [[SetData]] internal slot, then:
1. Letoutputbe a new Set object intargetRealmwhose [[SetData]] internal slot value is a new emptyList
.
2. SetdeepCloneto true.
15. Otherwise, ifinputis an Array exotic object, then:
1. LetinputLenbeOrdinaryGetOwnProperty
(input, "length").[[Value]].
2. LetoutputProtobe the%ArrayPrototype%
intrinsic object intargetRealm.
3. Letoutputbe !ArrayCreate
(inputLen,outputProto).
4. SetdeepCloneto true.
16. Otherwise, ifinputhas a [[Clonep98
]] internal method, then letoutputbe ?input.[[Clonep98
]](targetRealm,memory).
17. Otherwise, ifIsCallable
(input) is true, then throw a"DataCloneError"
DOMException
.
18. Otherwise, ifinputhas any internal slot other than [[Prototype]] or [[Extensible]], then throw a"DataCloneError"
DOMException
.
19. Otherwise, ifinputis an exotic object, then throw a"DataCloneError"
DOMException
.
For instance, a [[PromiseState]] or [[WeakMapData]] internal slot.
Example
100
Documents you may be interested
Documents you may be interested