टीएच क्रोमियम उदाहरण से वर्तमान वेब दस्तावेज़ में एम्बेडेड एक विशेष डोम नोड प्राप्त करने के लिए, इसकी आईडी का उपयोग करके, आप ICefDomDocument.getElementById() का उपयोग करते हैं। लेकिन आप NAME विशेषता द्वारा तत्व कैसे प्राप्त करते हैं? जावास्क्रिप्ट document.getElementsByName() विधि और TWebBrowser (कि IE लपेटता) एक ऐसी ही कॉल किया है है, लेकिन मैं कैसे TChromium के साथ ऐसा करने को समझ नहीं सकता। मुझे कुछ DOM तत्व ढूंढने की आवश्यकता है जिनमें NAME विशेषताएँ हैं लेकिन कोई आईडी विशेषता नहीं है। मैं ceflib इकाई खोज की है और कुछ भी है कि यह करना होगा नहीं देखा।डेल्फी क्रोमियम एम्बेडेड में नाम से तत्व कैसे प्राप्त करें?
साइड सवाल। अगर किसी के पास टीएचरोमियम "व्यंजनों" शैली साइट या दस्तावेज़ का लिंक है तो मैं इसका उपयोग कर सकता हूं।
अद्यतन: उत्तर देने का इंतजार करते समय मैं getElementsbyName() प्राप्त करने के लिए निम्नलिखित कोड के साथ आया हूं। मुझे पूरे डोम पेड़ को स्कैन करने से कुछ तेज चाहिए। यदि आप देखते हैं कुछ कोड में गलत जाने मुझे पता है:
type
TDynamicCefDomNodeArray = array of ICefDomNode;
// Given a Chromium document interface reference and a NAME attribute to search for,
// return an array of all DOM nodes whose NAME attribute matches the desired.
function getElementsByName(ADocument: ICefDomDocument; theName: string): TDynamicCefDomNodeArray;
// Get all the elements with a particular NAME attribute value and return
// an array of them.
procedure getElementsByName1(intfParentNode: ICefDomNode; theName: string; var aryResults: TDynamicCefDomNodeArray);
var
oldLen: integer;
intfChildNode: ICefDomNode;
theNameAttr: string;
begin
Result := nil;
intfChildNode := nil;
if Assigned(intfParentNode) then
begin
// Attributes are case insensitive.
theNameAttr := intfParentNode.GetElementAttribute('name');
if AnsiSameText(theNameAttr, theName) then
begin
// Name attribute match. Add it to the results array.
oldLen := Length(aryResults);
SetLength(aryResults, oldLen + 1);
aryResults[oldLen] := intfParentNode;
end; // if AnsiSameText(intfParentNode.Name, theName) then
// Does the parent node have children?
if intfParentNode.HasChildren then
begin
intfChildNode := intfParentNode.FirstChild;
// Scan them.
while Assigned(intfChildNode) do
begin
getElementsByName1(intfChildNode, theName, aryResults);
if Assigned(intfChildNode) then
intfChildNode := intfChildNode.NextSibling;
end;
end; // if intfParentNode.HasChildren then
end; // if Assigned(intfParentNode) then
end;
// ---------------------------------------------------------------
var
intfCefDomNode: ICefDomNode;
begin
intfCefDomNode := nil;
Result := nil;
if Assigned(ADocument) then
begin
// Check the header.
intfCefDomNode := ADocument.Document;
if Assigned(intfCefDomNode) then
begin
// Check the parent.
getElementsByName1(intfCefDomNode, theName, Result);
end; // if Assigned(intfCefDomNode) then
end; // if Assigned(ADocoument) then
end;
// ---------------------------------------------------------------
मुझे नहीं लगता कि यह मिश्रण और कला सामान के राज्य के साथ 10 साल पुराने प्रौद्योगिकी मिलान करने के लिए बुद्धिमान है और यह एक मिल गया और स्थायी समाधान बनने के लिए उम्मीद करते हैं। इस विशेष मामले में, टीच्रोमियम डेल्फ़ 6 का समर्थन नहीं करता है। Http://code.google.com/p/delphichromiumembedded/ –
@ जेरोइन, ['टीच्रोमियम'] (http://code.google.com/p/delphichromiumembedded /) डेल्फी 6 का समर्थन नहीं करता है (हालांकि इसके लिए कोई पैकेज नहीं है), लेकिन इसका मतलब यह नहीं है कि यह वहां काम नहीं कर सका। मेरे पास डेल्फी 200 है, जो असमर्थित है, लेकिन स्रोत की तलाश में, वहां कुछ भी नहीं है जो उपयोग को बाधित कर सकता है ;-) – TLama
@TLama अगर मेरा दिमाग मुझे काफी अच्छी तरह से सेवा देता है, डेल्फी 7 ने COM सामान लपेटने से संबंधित कुछ फ़िक्स पेश किए हैं। यह डेल्फी 6 का समर्थन नहीं करने का एक कारण हो सकता है। मैं रॉबर्ट को टीएचरोमियम टीम के साथ इस धारणा को सत्यापित करने की सलाह दूंगा। –