2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

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

1 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
.Net MAUIのWebViewClassにJavaScriptの関数機能使えるやつあったから
それ使ってHTMLの情報を取り出したいんだけど
実行ボタン推してみても{}とかになっちゃうんだよね、、、
一応nullじゃないから取得してるとは思うんだけど何なんだこれは、、、
https://youtu.be/hRZXSCENR_Q

2 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
見てないけどデバッグしろ

3 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
これって{}が出てくるってことはJson形式で出力されるの?
HTML形式がいいんだが、、、

4 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
Stackoverflowにこの記述量レベルで質問してみて欲しい

5 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
スクレイピングするのbingの検索結果だったのかよ
それならそっちのAPI使えばいいだろ

6 :おじ乳輪様 ◆IQ90.av/.Akz :[ここ壊れてます] .net
コードは?

7 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
>>5
商用販売したいから制限あるAPIはあまり、、、

8 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
全コード載せます

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 :おじ乳輪様 ◆IQ90.av/.Akz :[ここ壊れてます] .net
それだとdomオプジェクトだからおかしくなるんじゃね?
.innerHtmlでHTML取得すればいいのでは

10 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
iiってやつがWebViewの名前でentryってやつがリンクを貼り付ける領域
txt_Clickedでentryの中の文字を読み取りiiにソースを渡す
html_ClickedでJavaScriptのメソッドでそのサイトのHTMLを読み取り、textBoxに文字を表示するアプリです

11 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
private async void html_Clicked(object sender, EventArgs e)
{
string result = await ii.EvaluateJavaScriptAsync($"document.getElementById('b_content').innerHtml");
textBox.Text = result;
}
}
でやってみたけどなにも反応しなくなった、、、

12 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
単純にそんなidがないんだろうな

13 :おじ乳輪様 ◆IQ90.av/.Akz :[ここ壊れてます] .net
空文字列になってるんじゃね?
document.body.innerHtmlは取得できるの?

14 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
なんか別のサイト('b_content'がないサイト)だとnull帰ってくるから動いてはいるんだろうが、、、
中身帰ってこない、、、

15 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
document.body.innerHtmlでやってみたけどやっぱり帰ってこないな、、、
bodyにしちゃったからどのサイトでも帰って来なくなった(当たり前だが)
空白文字になっちゃうのかな?

16 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
HTMLの階層が深いから帰ってこないとかあるの?

17 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
Webブラウザがモバイル用のWebブラウザだからかな?
だれかAndoroidのWebViewでこの機能試したことのある人いる?

18 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
これほとんど同じじゃね
https://stackoverflow.com/questions/52339100/why-evaluatejavascriptasync-is-not-being-executed

19 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
ローカルホストとか関係ないよね?

20 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
>>18
サンクスちょっと見て見る

21 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
いまいち翻訳がわからんけどメインクラスにそのメソッドが入ってないからってことなのか?

22 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
よくわからんけどIDEのデバッグ機能とかでwebviewオブジェクトの中身見れたりできんの?
ぬるぽになってないならなんか入ってんだろうけど

23 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
>>22
なぜかできない…

24 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
なんかjsじゃないのに混じってるとイライラする

25 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
その問題の解決策ではないけどwebviewからhtmlソース自体はプロパティから取れたりしないの?
htmlソースからjs使わずにhtml parserとかでb_content要素取得するとかどうかな

26 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
flutterちゃうんか

27 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
できたわすまん
textBoxにresultを書き込むところでブレークポイント作って確認した
ただなぜかNullになってる
html集めるところでずっと右往左往してるのかもしれん

28 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
>>25
このWebViewにはそういう関数がないんですわ、、、
この程度の能力しかない
https://docs.microsoft.com/ja-jp/dotnet/maui/user-interface/controls/webview

29 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
>>26
これからの時代は.NET MAUIですぜ?

30 :おじ乳輪様 ◆IQ90.av/.Akz :[ここ壊れてます] .net
まず「"test"」ってスクリプトを実行したらtestって結果が取れるの?

31 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
>>28
urlをSouceに設定したら暗黙的にUrlWebViewSourceオブジェクトに変換されるってかいてあるからその中にhtml入るんじゃね

32 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
>>30
すまんそれやったことないんだけど教えて?
document.getElement~の部分をtestにするだけ?

33 :おじ乳輪様 ◆IQ90.av/.Akz :[ここ壊れてます] .net
>>32
$"~~~"の部分を"test"にする

34 :おじ乳輪様 ◆IQ90.av/.Akz :[ここ壊れてます] .net
間違えた

35 :おじ乳輪様 ◆IQ90.av/.Akz :[ここ壊れてます] .net
"'test'"←こう

36 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
なんかjQueryみたいで気持ち悪いな

37 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
>>30
まるまるtestに置き換えるとnullが帰ってきますね

38 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
>>35
シングルコーテーションで囲むと何も帰って来なくなります

39 :おじ乳輪様 ◆IQ90.av/.Akz :[ここ壊れてます] .net
>>35のほうも同じ?

40 :おじ乳輪様 ◆IQ90.av/.Akz :[ここ壊れてます] .net
そうなのか

41 :おじ乳輪様 ◆IQ90.av/.Akz :[ここ壊れてます] .net
nullが返ってくる時もあるのがよくわからないけど>>18みたいにこうしても無理?

var result = ""
Device.BeginInvokeOnMainThread(async() =>
{
result = await ii.EvaluateJavaScriptAsync($"document.getElementById('b_content').innerHtml");
});

textBox.Text = result;

42 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
>>31
と思うじゃん?
ソース型がString型に入らないからtoString()で変換したらこんなんになるんだよねw

https://imgur.com/r9ms4lj.jpeg

43 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
>>42
デバッグでオブジェクト覗いてみた?
toStringなんて文字列連結にもつかわれるのにhtmlソースなんて返ってきたらびっくらこくわ

44 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
>>41
ダメっぽいな
どのサイトでもnull返さなくなってしまった、、、

45 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
これ絶対5ch荒らすスクリプト作ろうとしてるだろ

46 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
>>43
うーんちょっと見てみたけど無さそうでした…

47 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
>>45
そんなゴミみたいなことはしない
画像保存のスクレイピングソフト作ってPython信者に売りつける
奴らツールを作るためのツール作ってイキガッてるからなw

48 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
そもそもそのidは存在するの
とりあえずローカルにhtml置いて試してみたら

49 :おじ乳輪様 ◆IQ90.av/.Akz :[ここ壊れてます] .net
こうしても何もテキストボックスに表示されない?

private async void html_Clicked(object sender, EventArgs e)
{
try{
string result = await ii.EvaluateJavaScriptAsync($"'test'");
textBox.Text = result;
} catch(Exception ex) {
testBox.Text = ex.Message;
}
}

50 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
まだシンセガイジはガイジのままだった

51 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
この機能の経緯を話すとまず上の機能ができるソフトを作りたかった
ブラウザのHTMLの取得は.HttpCliantクラスで取得できたんだがこういうJavaスクリプトで新しい画像を読み込むようなサイトでのImgの取得ができなかった
普通ならSelenium使えばいいじゃんになるんだが商用利用を目的にしてるからC#の標準機能でできないかと考えたらブラウザ作ってそれ動かしてHTML取得すればいいじゃんと思い今に至る
WinForm時代のWebBrowserだと今のHTMLの取得はできたみたいだけど.NET MAUIでできないかを考えたところここで躓いてるわけさ

52 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
>>49
何も表示されませんね…

53 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
5ch嵐ツールなら俺のリポジトリに紛れ込ませてあるよ

54 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
なんかJavaScriptAsyncの中で止まっちゃってるのかもしんないなぁ…

55 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
>>53
そんなツール作りません

56 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
そもそもgetByIdでセレクトしてそんなかのinnerHTMLとか持ってこなきゃいけないんじゃないの
resultに値が出てくるならasyncは成功してるはずだしgetByIdは成功してるってことでしょ

57 :おじ乳輪様 ◆IQ90.av/.Akz :[ここ壊れてます] .net
>>53
Rustのやつ?

58 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
>>48
b_contentはありまぁす!
https://imgur.com/undefined.jpeg

ローカルにhtml置くやり方いまいちわかってないから時間ください

59 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
>>56
まぁ('b_content')がない場合はnullが帰ってくるから動いてはいるんだろうね
ただ.innerHtmlを外したらJsonが帰ってくるみたいなんだけど{}で空白になるんよね、、、

60 :以下、?ちゃんねるからVIPがお送りします:[ここ壊れてます] .net
とりあえず今日は寝ます
みんな付き合ってくれてありがとう
進展あったらまた報告するね
もしかしたらWebBrowser別に作る方が早いかもですね

総レス数 60
13 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★