Этот код может захватывать «элемент» HTML-страницы. Я использую FMX.TWebBrowser.Navigate() для доступа к странице. С помощью JavaScript я выбираю элемент, значение которого мне нужно. Я воспроизвожу его внутри функции, которая преобразует его в строку, используя эти библиотеки Androidapi, вот и все:
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.
Начиная с этого сценария, как я могу сохранить другие значения в Edit2.Text, Edit3.Text? Я хотел бы сохранить его в TStringList, Array, что-то в этом роде, чтобы иметь возможность отображать его в формах Firemonkey.
Этот код может захватывать «элемент» HTML-страницы. Я использую FMX.TWebBrowser.Navigate() для доступа к странице. С помощью JavaScript я выбираю элемент, значение которого мне нужно. Я воспроизвожу его внутри функции, которая преобразует его в строку, используя эти библиотеки Androidapi, вот и все: [code]unit Unit1;
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] Начиная с этого сценария, как я могу сохранить другие значения в Edit2.Text, Edit3.Text? Я хотел бы сохранить его в TStringList, Array, что-то в этом роде, чтобы иметь возможность отображать его в формах Firemonkey.
Этот код может захватывать «элемент» HTML-страницы. Я использую FMX.TWebBrowser.Navigate() для доступа к странице. С помощью JavaScript я выбираю элемент, значение которого мне нужно. Я воспроизвожу его внутри функции, которая преобразует его в...
У меня есть базовый класс со статическим элементом и не статичной функцией, которая возвращает значение указанного статического члена. У меня также есть полученный класс, который наследует базовый класс, но присваивает альтернативное значение...
Для пользовательского интерфейса я использую Extjs, для серверной части — C#. Моя проблема в том, что у меня есть свойство appsettings.json в HubSettings, LiveStream — это свойство, у которого есть URL-адрес и заголовок. Мне нужно получить URL-адрес...