unit Unit1;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.WebBrowser, FMX.Controls.Presentation, FMX.StdCtrls, FMX.Edit,
Androidapi.JNIBridge, Androidapi.JNI.WebKit, Androidapi.JNI.JavaTypes;
type
TJavaScriptResultEvent = procedure(Sender: TObject; const JavaScriptResult: string) of object;
TJavaScriptValueCallback = class(TJavaLocal, JValueCallback)
private
FOnResult: TJavaScriptResultEvent;
public
{ JValueCallback }
procedure onReceiveValue(value: JObject); cdecl;
public
property OnResult: TJavaScriptResultEvent read FOnResult write FOnResult;
end;
TForm1 = class(TForm)
WebBrowser: TWebBrowser;
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
FJavaScriptValueCallback: TJavaScriptValueCallback;
procedure NewDateResultHandler(Sender: TObject; const AJavaScriptResult: string);
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
end;
var
Form1: TForm1;
implementation
{$R *.fmx}
uses
Androidapi.Helpers;
{ TJavaScriptValueCallback }
procedure TJavaScriptValueCallback.onReceiveValue(value: JObject);
begin
if Assigned(FOnResult) then
FOnResult(Self, JStringToString(TJString.Wrap(value)).DeQuotedString('"'));
end;
{ TForm1 }
constructor TForm1.Create(AOwner: TComponent);
begin
inherited;
FJavaScriptValueCallback := TJavaScriptValueCallback.Create;
end;
destructor TForm1.Destroy;
begin
FJavaScriptValueCallback.Free;
inherited;
end;
procedure TForm1.NewDateResultHandler(Sender: TObject; const AJavaScriptResult: string);
begin
Edit1.Text := AJavaScriptResult;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
LWebView: JWebView;
begin
if Supports(WebBrowser, JWebView, LWebView) then
begin
FJavaScriptValueCallback.OnResult := NewDateResultHandler;
LWebView.evaluateJavascript(StringToJString('document.getElementById("ID").innerHTML;'), FJavaScriptValueCallback);
end;
end;
end.
До тех пор этот код может захватывать «элемент» HTML-страницы. Мне нужно сохранить другие значения. Как вы могли бы это сделать, исходя из этого сценария? сохранить другое значение в Edit2.Text, Edit3.Text?
Я использую FMX.TWebBrowser.Navigate для доступа к странице. С помощью JavaScript я выбираю элемент, значение которого мне нужно, я воспроизвожу его внутри функции, которая преобразует его в строку, используя эти библиотеки Androidapi, вот и все.
Я хотел бы сохраните его в TStringList, Array или что-то в этом роде, чтобы иметь возможность отображать его в формах Firemonkey.
procedure TJavaScriptValueCallback.onReceiveValue(value: JObject); begin if Assigned(FOnResult) then FOnResult(Self, JStringToString(TJString.Wrap(value)).DeQuotedString('"')); end;
{ TForm1 }
constructor TForm1.Create(AOwner: TComponent); begin inherited; FJavaScriptValueCallback := TJavaScriptValueCallback.Create; end;
destructor TForm1.Destroy; begin FJavaScriptValueCallback.Free; inherited; end;
procedure TForm1.Button1Click(Sender: TObject); var LWebView: JWebView; begin if Supports(WebBrowser, JWebView, LWebView) then begin FJavaScriptValueCallback.OnResult := NewDateResultHandler; LWebView.evaluateJavascript(StringToJString('document.getElementById("ID").innerHTML;'), FJavaScriptValueCallback); end; end;
end. [/code] До тех пор этот код может захватывать «элемент» HTML-страницы. Мне нужно сохранить другие значения. Как вы могли бы это сделать, исходя из этого сценария? сохранить другое значение в Edit2.Text, Edit3.Text? Я использую FMX.TWebBrowser.Navigate для доступа к странице. С помощью JavaScript я выбираю элемент, значение которого мне нужно, я воспроизвожу его внутри функции, которая преобразует его в строку, используя эти библиотеки Androidapi, вот и все. Я хотел бы сохраните его в TStringList, Array или что-то в этом роде, чтобы иметь возможность отображать его в формах Firemonkey.
Этот код может захватывать «элемент» HTML-страницы. Я использую FMX.TWebBrowser.Navigate() для доступа к странице. С помощью JavaScript я выбираю элемент, значение которого мне нужно. Я воспроизвожу его внутри функции, которая преобразует его в...
Этот код может захватывать «элемент» HTML-страницы. Я использую FMX.TWebBrowser.Navigate() для доступа к странице. С помощью JavaScript я выбираю элемент, значение которого мне нужно. Я воспроизвожу его внутри функции, которая преобразует его в...
У меня есть базовый класс со статическим элементом и не статичной функцией, которая возвращает значение указанного статического члена. У меня также есть полученный класс, который наследует базовый класс, но присваивает альтернативное значение...