رفتن به مطلب
  • 0

مشکل با executeJavascript


MrMedia

سوال

سلام من یک کد دارم جاوا اسکریپت دارم و بدرستی در کنسول کروم کار میکنه کد جوا اسکریپتم اینه:
 

document.querySelector('[class*="samaple-row new"] .price').innerText

این کد متغیر 78$ موجود در HTML زیر رو بهم میده
 

<div class="samaple-row new-15">
        <div class="price 15-37">$78</div>
</div>

حالا همین کد رو در با b4a بوسیله WebViewExtras.executeJavascript هیچ عکس عملی نشون نمیده

Sub check
	Dim Javascript As String="B4A.CallSub('GetVarFromWebview', true,  document.querySelector('[class*="&Chr(34)&"samaple-row new"&Chr(34)&"] .price').innerText"
	WebViewExtras.executeJavascript(WebView1, Javascript)
End Sub

Sub GetVarFromWebview(WebVar As String)
	Msgbox(WebVar,"")
End Sub

حتی کد جاوا اسکریپت رو به این شکل هم چک کردم
 

Dim Javascript As String="B4A.CallSub('GetVarFromWebview', true,  document.querySelector('[class*='samaple-row new'] .price').innerText"

ولی جواب نمیده، لطفا اگه کسی تجربه ای داره راهنمایی کنه
ممنون

لینک ارسال
به اشتراک گذاری در سایت های دیگر

16 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

دسته همگی درد نکنه که کمک کردن، مشکلم حل شد
راه حل کدم رو میگم شاید عجیب باشه ولی مشکلم رو حل کرد
شاید به کار دوستان بیاد
 

کد اصلی من این بود
Dim Javascript As String="B4A.CallSub('GetVarFromWebview', true,  document.querySelector('[class*='samaple-row new'] .price').innerText)"
حالا تغییرش دادم به
Dim Javascript As String="B4A.CallSub("&Chr(39)&"GetVarFromWebview"&Chr(39)&", true,  document.querySelector("&Chr(39)&"[class*="&Chr(34)&"samaple-row new"&Chr(34)&"] .price"&Chr(39)&").innerText)"

تو کد اصلی sale-row new میان کارکتر   "    قرار داشت که البته بازم که با chr کارکتر رو به string اضافه کردم نشد ولی اینبار کل علایم رو با chr به کد اضافه کردم و حل شد

لینک ارسال
به اشتراک گذاری در سایت های دیگر

این کد رو تست کنید

document.getElementsByClassName('price 15-37').innerText

or

document.getElementsByClassName('price 15-37')[0].innerText

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 8 ساعت قبل، behnam_tr گفته است :

این کد رو تست کنید


document.getElementsByClassName('price 15-37').innerText

or

document.getElementsByClassName('price 15-37')[0].innerText

 

ممنون از پاسخ ولی اعداد جلوی price ثابت نیستن و دائما تغییر می کنن و کد شما به کار نمی یاد، کدی که من دادم روی کنسول کروم کار میکنه ولی درb4a جواب نمیده، کلا کد هایی از این دست کار نمی کنن جز رویداد کلیک و درج متن، دلیلشم نمی دونم

لینک ارسال
به اشتراک گذاری در سایت های دیگر

document.getElementsByTagName('div')[0];

از تگ نیم استفاده کنید این موردم چک کنید

پیمایش کنید شماره تگ موردنظرتونو وارد کنید

*کدهای جاوا اسکریپت شاید روی کنسول درست باشه ولی با توجه به محدودیت در کتابخانه بیسیک لزوما نمیشه گفت حتما جواب میده

اون قسمت کدی که لازمه بخونید به صورت کامل بذارید اینجا بهتر میشه راهنمایی کرد

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در هم اکنون، behnam_tr گفته است :

document.getElementsByTagName('div')[0];

از تگ نیم استفاده کنید این موردم چک کنید

پیمایش کنید شماره تگ موردنظرتونو وارد کنید

*کدهای جاوا اسکریپت شاید روی کنسول درست باشه ولی با توجه به محدودیت در کتابخانه بیسیک لزوما نمیشه گفت حتما جواب میده

اون قسمت کدی که لازمه بخونید به صورت کامل بذارید اینجا بهتر میشه راهنمایی کرد

از تگ نیم هم استفاده کردم ولی جواب نمیده
اینم کد

<div class="Tabel-price">
	<div class="sale-row new-17">
  	      <div class="price 11-5">$192</div>
	</div>
	<div class="sale-row new-61">
 	       <div class="price 52-14">$65</div>
	</div>
	<div class="sale-row new-12">
 	       <div class="price 170-3">$53</div>
	</div>
	<div class="sale-row new-44">
       	 <div class="price 27-34">$5</div>
	</div>
</div>

این صفحه و جدول Tabel-price دائما از بالا به روز میشه و عدد موجود در اون هم متغییر هستن، من فقط اولین رکورد رو میخوام، مثلا در این جدول الان 192$ رو میخوام

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بفرمایید خدمت شما

Tryit Editor v3.5

 

var x = document.getElementsByClassName("Tabel-price")[0].innerText;
    alert(x);

من با این روش انجام دادم اوکی بود

لینک ارسال
به اشتراک گذاری در سایت های دیگر

ممنون از راهنمایی هاتون و پیگیری تون، ولی هم کد شما هم کد من در دسکتاپ و هم در ادیتور w3schools به درستی کار میکنه ولی در b4a جواب نمیده
اینم کد من:
Tryit Editor v3.5
فکر کنم راهی برای دیباگ اجرای اسکریپت وب ویو مثل کنسول کروم وجود داشت، ولی یادم نیست کجا خوندمش، کسی یادش نیست

لینک ارسال
به اشتراک گذاری در سایت های دیگر

لود سایت داخل وب ویوو به صورت کامل انجام میشه ؟؟

در صورت امکان ادرس صفحه رو بدید چک کنم

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در هم اکنون، behnam_tr گفته است :

لود سایت داخل وب ویوو به صورت کامل انجام میشه ؟؟

در صورت امکان ادرس صفحه رو بدید چک کنم

متاسفانه امکان دادن آدرس رو ندارم، ولی 100% لود میشه و باهاش کار میکنم
فقط رویداد کلیک و درج متن در ادیت باکس ها با جاوا بدون مشکل اجرا میشه

لینک ارسال
به اشتراک گذاری در سایت های دیگر

خیلی سایت ها هستن که متاسفانه دستورات جاوا اسکریپت روشون به درستی اجرا نمیشه البته مشکل از بیسیک فور اندروید هست 

و شخصا نیز راه حلی براش پیدا نکردم 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در هم اکنون، M-CAP7AIN گفته است :

کتابخونه jSoup هم تست کنید

یا با SubString بیاید مقدار دلخواهتون رو در بیارید

مرسی، اما jsoup برای گرفتن اطلاعات از webview نیستش و مورد فقط از طریق webview قابل دسترس هستش چون جدول دائما در حال به روز رسانی هستش و دانلود و آنالیز اون کار معقولی نیست

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بعد از اجرای هر اسکریپ این کد رو در Logs دریافت می کنم
 

Uncaught SyntaxError: missing ) after argument list in  (Line: 1)

نمیدونم مشکل چیه کد ایکریپت هم اینه

Dim Javascript As String="B4A.CallSub('GetVarFromWebview', true,  document.querySelector('[class*='samaple-row new'] .price').innerText)"

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 14 ساعت قبل، miling گفته است :

دسته همگی درد نکنه که کمک کردن، مشکلم حل شد
راه حل کدم رو میگم شاید عجیب باشه ولی مشکلم رو حل کرد
شاید به کار دوستان بیاد
 


کد اصلی من این بود
Dim Javascript As String="B4A.CallSub('GetVarFromWebview', true,  document.querySelector('[class*='samaple-row new'] .price').innerText)"
حالا تغییرش دادم به
Dim Javascript As String="B4A.CallSub("&Chr(39)&"GetVarFromWebview"&Chr(39)&", true,  document.querySelector("&Chr(39)&"[class*="&Chr(34)&"samaple-row new"&Chr(34)&"] .price"&Chr(39)&").innerText)"

تو کد اصلی sale-row new میان کارکتر   "    قرار داشت که البته بازم که با chr کارکتر رو به string اضافه کردم نشد ولی اینبار کل علایم رو با chr به کد اضافه کردم و حل شد

بجای استفاده از chr

"B4A.CallSub('GetVarFromWebview', true,  document.querySelector('[class*=""samaple-row new""] .price').innerText)"

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در هم اکنون، M-CAP7AIN گفته است :

بجای استفاده از chr


"B4A.CallSub('GetVarFromWebview', true,  document.querySelector('[class*=""samaple-row new""] .price').innerText)"

 

مرسی قبلا اینکار رو کردم ولی نشده بود

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...