プログラミングJavaScriptに詳しいやついる?

1 : 2022/08/25(木) 22:21:49.442 ID:zwjZn4Y30
.Net MAUIのWebViewClassにJavaScriptの関数機能使えるやつあったから
それ使ってHTMLの情報を取り出したいんだけど
実行ボタン推してみても{}とかになっちゃうんだよね、、、
一応nullじゃないから取得してるとは思うんだけど何なんだこれは、、、
https://youtu.be/hRZXSCENR_Q
2 : 2022/08/25(木) 22:23:15.958 ID:6GIqvLv2a
見てないけどデバッグしろ
3 : 2022/08/25(木) 22:23:53.275 ID:zwjZn4Y30
これって{}が出てくるってことはJson形式で出力されるの?
HTML形式がいいんだが、、、
4 : 2022/08/25(木) 22:24:31.749 ID:J4sMksAc0
Stackoverflowにこの記述量レベルで質問してみて欲しい
5 : 2022/08/25(木) 22:26:55.786 ID:cAtc9dJs0
スクレイピングするのbingの検索結果だったのかよ
それならそっちのAPI使えばいいだろ
7 : 2022/08/25(木) 22:29:04.360 ID:zwjZn4Y30
>>5
商用販売したいから制限あるAPIはあまり、、、
6 : 2022/08/25(木) 22:28:22.074
コードは?
8 : 2022/08/25(木) 22:29:31.411 ID:zwjZn4Y30
全コード載せます

namespace MauiApp1;

public partial class MainPage : ContentPage
{
int count = 0;

public MainPage()
{
InitializeComponent();
ii.Source = "https://www.bing.com/";;

}

private void txt_Clicked(object sender, EventArgs e)
{
ii.Source=entry.Text;
}

private async void html_Clicked(object sender, EventArgs e)
{
string result = await ii.EvaluateJavaScriptAsync($"document.getElementById('b_content')");
textBox.Text = result;
}
}

9 : 2022/08/25(木) 22:31:49.887
それだとdomオプジェクトだからおかしくなるんじゃね?
.innerHtmlでHTML取得すればいいのでは
10 : 2022/08/25(木) 22:32:55.249 ID:zwjZn4Y30
iiってやつがWebViewの名前でentryってやつがリンクを貼り付ける領域
txt_Clickedでentryの中の文字を読み取りiiにソースを渡す
html_ClickedでJavaScriptのメソッドでそのサイトのHTMLを読み取り、textBoxに文字を表示するアプリです
11 : 2022/08/25(木) 22:35:15.204 ID:zwjZn4Y30
private async void html_Clicked(object sender, EventArgs e)
{
string result = await ii.EvaluateJavaScriptAsync($"document.getElementById('b_content').innerHtml");
textBox.Text = result;
}
}
でやってみたけどなにも反応しなくなった、、、
12 : 2022/08/25(木) 22:36:21.975 ID:k9v9C0z60
単純にそんなidがないんだろうな
13 : 2022/08/25(木) 22:36:26.666
空文字列になってるんじゃね?
document.body.innerHtmlは取得できるの?
14 : 2022/08/25(木) 22:38:06.572 ID:zwjZn4Y30
なんか別のサイト('b_content'がないサイト)だとnull帰ってくるから動いてはいるんだろうが、、、
中身帰ってこない、、、
15 : 2022/08/25(木) 22:40:38.593 ID:zwjZn4Y30
document.body.innerHtmlでやってみたけどやっぱり帰ってこないな、、、
bodyにしちゃったからどのサイトでも帰って来なくなった(当たり前だが)
空白文字になっちゃうのかな?
16 : 2022/08/25(木) 22:41:28.467 ID:zwjZn4Y30
HTMLの階層が深いから帰ってこないとかあるの?
17 : 2022/08/25(木) 22:44:59.505 ID:zwjZn4Y30
Webブラウザがモバイル用のWebブラウザだからかな?
だれかAndoroidのWebViewでこの機能試したことのある人いる?
19 : 2022/08/25(木) 22:57:05.564 ID:zwjZn4Y30
ローカルホストとか関係ないよね?
21 : 2022/08/25(木) 23:02:11.799 ID:zwjZn4Y30
いまいち翻訳がわからんけどメインクラスにそのメソッドが入ってないからってことなのか?
22 : 2022/08/25(木) 23:06:05.313 ID:H3Cuy7g/0
よくわからんけどIDEのデバッグ機能とかでwebviewオブジェクトの中身見れたりできんの?
ぬるぽになってないならなんか入ってんだろうけど
23 : 2022/08/25(木) 23:13:46.361 ID:zwjZn4Y30
>>22
なぜかできない…
24 : 2022/08/25(木) 23:16:34.084 ID:9ol2i14I0
なんかjsじゃないのに混じってるとイライラする
25 : 2022/08/25(木) 23:17:03.482 ID:k9v9C0z60
その問題の解決策ではないけどwebviewからhtmlソース自体はプロパティから取れたりしないの?
htmlソースからjs使わずにhtml parserとかでb_content要素取得するとかどうかな
28 : 2022/08/25(木) 23:24:05.953 ID:zwjZn4Y30
>>25
このWebViewにはそういう関数がないんですわ、、、
この程度の能力しかない
https://docs.microsoft.com/ja-jp/dotnet/maui/user-interface/controls/webview
31 : 2022/08/25(木) 23:30:02.313 ID:k9v9C0z60
>>28
urlをSouceに設定したら暗黙的にUrlWebViewSourceオブジェクトに変換されるってかいてあるからその中にhtml入るんじゃね
42 : 2022/08/25(木) 23:39:33.918 ID:zwjZn4Y30
>>31
と思うじゃん?
ソース型がString型に入らないからtoString()で変換したらこんなんになるんだよねw

レス42番の画像サムネイル

26 : 2022/08/25(木) 23:17:47.450 ID:9ol2i14I0
flutterちゃうんか
29 : 2022/08/25(木) 23:26:34.948 ID:zwjZn4Y30
>>26
これからの時代は.NET MAUIですぜ?
27 : 2022/08/25(木) 23:19:19.605 ID:zwjZn4Y30
できたわすまん
textBoxにresultを書き込むところでブレークポイント作って確認した
ただなぜかNullになってる
html集めるところでずっと右往左往してるのかもしれん
30 : 2022/08/25(木) 23:29:36.138
まず「"test"」ってスクリプトを実行したらtestって結果が取れるの?
32 : 2022/08/25(木) 23:30:51.661 ID:zwjZn4Y30
>>30
すまんそれやったことないんだけど教えて?
document.getElement~の部分をtestにするだけ?
33 : 2022/08/25(木) 23:31:23.456
>>32
$"~~~"の部分を"test"にする
37 : 2022/08/25(木) 23:32:53.547 ID:zwjZn4Y30
>>30
まるまるtestに置き換えるとnullが帰ってきますね
34 : 2022/08/25(木) 23:31:43.895
間違えた
35 : 2022/08/25(木) 23:32:05.481
"'test'"←こう
38 : 2022/08/25(木) 23:34:00.610 ID:zwjZn4Y30
>>35
シングルコーテーションで囲むと何も帰って来なくなります
39 : 2022/08/25(木) 23:34:25.704
>>35のほうも同じ?
36 : 2022/08/25(木) 23:32:20.024 ID:9ol2i14I0
なんかjQueryみたいで気持ち悪いな
40 : 2022/08/25(木) 23:35:20.683
そうなのか

コメント

タイトルとURLをコピーしました