ورود

View Full Version : سوال: می خوام صفحه Web رو کنترل کنم .. (راهنمایی بفرمایید)



مهران رسا
پنج شنبه 31 مرداد 1387, 10:49 صبح
من این سوال رو در بخش VB هم مطرح کردم . فکر کردم شاید بشه با استفاده از یکی از ابزار های VB صفحه وب رو کنترل کرد .
برای مثال : به آدرسی مشخصی بریم یا پنجره ای رو باز کنیم ، لینکی رو انتخاب کنیم ، روی Button ها کنترل داشته باشیم و ...

حالا می خوام بدونم اینکار با یکی از زبان های JavaScript و یا VbScript امکان پذیره ؟

ممنونم

امید امرایی
پنج شنبه 31 مرداد 1387, 19:19 عصر
بله شما همه این کار ها رو می تونید انجام بدید



var NewWin = window.open('www.domain.com');
NewWin.document.links[0].click();

مهران رسا
شنبه 02 شهریور 1387, 11:11 صبح
از لطف شما سپاسگذارم .

اگه میشه یه مثال کامل همراه با توضیح ارائه بدید . من آشنایی کاملی با این زبان ندارم .

امید امرایی
شنبه 02 شهریور 1387, 13:38 عصر
بله
برای این کار شما باید یک اشاره گر به صفحه ای که می خواید کنترل بشه ، داشته باشید . در مثال قبلی این اشاره گر از طریق تابع open مربوط به شی window ایجاد و به شی NewWin اختصاص پیدا کرده

با داشتن NewWin مهمترین عنصر صفحه یعنی document رو هم در اختیار داریم و بهتریم روش برای دستیابی به عناصر موجود در document هم استفاده از getElementById هستش و یا می تونید از اشیاء خود جاوا اسکریپت استفاده کنید



NewWin.document.getElementById('SubmitButton').cli ck();

or

NewWin.document.forms[0].submit();
به عنوان مثال در نمونه قبلی با فرض اینکه می دونیم اولین لینک موجود در سند NewWin چی هست بدون اینکه صفحه رو داشته باشیم روش کلیک کردیم


NewWin.document.links[0].click();

مهران رسا
یک شنبه 03 شهریور 1387, 09:24 صبح
حالا اگه اطلاعاتی در مورد لینک های موجود در صفحه نداشته باشیم چی ؟!

مثلاً همین http://barnamenevis.org/forum/images/buttons/reply.gif (http://barnamenevis.org/forum/newreply.php?do=newreply&noquote=1&p=579403) دکمه رو در نظر بگیرید .

این یه تصویره که یه لینک واسش تعریف شده . اگه بخوایم لینک این دکمه خاص رو استخراج کنیم راه حل چیه ؟ بدون اینکه بدونیم چندیمن object و یا چندمین لینک روی صفحه است .

احتمالاً از روی مشخصات ظاهری مثل Top و Left بشه این کار رو کرد .

منتظر راهنماییتون هستم ...

twelve
یک شنبه 03 شهریور 1387, 11:26 صبح
حالا اگه اطلاعاتی در مورد لینک های موجود در صفحه نداشته باشیم چی ؟!

مثلاً همین http://barnamenevis.org/forum/images/buttons/reply.gif (http://barnamenevis.org/forum/newreply.php?do=newreply&noquote=1&p=579403) دکمه رو در نظر بگیرید .

این یه تصویره که یه لینک واسش تعریف شده . اگه بخوایم لینک این دکمه خاص رو استخراج کنیم راه حل چیه ؟ بدون اینکه بدونیم چندیمن object و یا چندمین لینک روی صفحه است .

احتمالاً از روی مشخصات ظاهری مثل Top و Left بشه این کار رو کرد .

منتظر راهنماییتون هستم ...

با استفاده از آیدی ! زبان جاوا اسکریپت یک زبان شی گراست ، یعنی با اشاره به اشیاء صفحه میتونه به اونها دسترسی داشته باشه و این بهترین نوع دسترسی است و از دسترسی آرایه ای کارامد تره. برای این مثالی که شما فرمودید ،برای دسترسی به لینک این تصویر می بایست به اون یه آیدی بدیم


<a href="default.aspx" id="link1"><img src="Images/answerbutton.gif" border="0" /></a>

حالا فرض کنیم دکمه ای در صفحه قرار داره که با کلیک شدنش ، لینک اون تصویر رو به ما میده :


<input type="button" onclick="javascript: document.write(document.getElementById('link1').hr ef) " value="click" />

مهران رسا
یک شنبه 03 شهریور 1387, 12:43 عصر
یعنی در خط اول دکمه رو ایجاد کردیم . و در خط دوم اون رو صدا زدیم ؟
من هنوز معنی این آیدی دادن رو متوجه نشدم .
منظور من اینه که کنترلی که از قبل توی صفحه وب هست رو کنترل کنیم .

اگه واستون مقدور هست پارامتر ها رو دونه دونه توضیح بدید . مرسی !

twelve
یک شنبه 03 شهریور 1387, 14:18 عصر
منظور من اینه که کنترلی که از قبل توی صفحه وب هست رو کنترل کنیم .
این صفحه وب کجاست ؟ خودتون ساختین یا مربوط یه یک سایت دیگه هست؟

من هنوز معنی این آیدی دادن رو متوجه نشدم . ما به کد لینک آیدی میدیم ، در مثال بالا Id=link1 .


یعنی در خط اول دکمه رو ایجاد کردیم . و در خط دوم اون رو صدا زدیم ؟در خط دوم ، خاصیت لینک دکمه ی http://barnamenevis.org/forum/images/buttons/reply.gif (http://barnamenevis.org/forum/newreply.php?do=newreply&noquote=1&p=579403) رو با کلیک روی دکمه دیگری به دست آوردیم ، این فقط یک مثال هست و نکته اون فقط این خط زیر هست :



javascript: document.write(document.getElementById('link1').hr ef)

مهران رسا
یک شنبه 03 شهریور 1387, 14:24 عصر
این صفحه وب کجاست ؟ خودتون ساختین یا مربوط یه یک سایت دیگه هست؟


مربوط به یه سایت دیگه هست .

امید امرایی
یک شنبه 03 شهریور 1387, 20:31 عصر
شما باید ابتدا بدونید که اون عنصر آیدی داره یا خیر و این کار با دیدن سورس صفحه مقدوره

اما گذشته از مطلب فوق اگه صفحه فوق رو خودتون طراحی نکردید به دلیل مسائل امنیتی به بیشتر عناصر و توابع دسترسی ندارید . خصوصا در FireFox

مهران رسا
دوشنبه 04 شهریور 1387, 12:17 عصر
که اینطور !!!

برای مثال میتونی کدی بنویسی که دکمه تشکر (http://barnamenevis.org/forum/images/buttons/post_thanks.gif (http://barnamenevis.org/forum/post_thanks.php?do=post_thanks_add&p=580275)) در همین صفحه رو صدا کنه ؟!!

مهران رسا
چهارشنبه 06 شهریور 1387, 07:57 صبح
من منتظرم !!

as13851365
چهارشنبه 06 شهریور 1387, 10:17 صبح
یعنی با استفاده از یک دکمه دیکه رویداد onclick دکمه دیکه رو فرواخوانی کنه ؟

مهران رسا
چهارشنبه 06 شهریور 1387, 13:45 عصر
حالا با استفاده از دکمه یا هر چیز دیگه ...

امید امرایی
چهارشنبه 06 شهریور 1387, 19:13 عصر
بله مي شه
ولي نه در حالتي . البته در مورد مرورگر هاي Mozilla Base

as13851365
چهارشنبه 06 شهریور 1387, 21:47 عصر
شما به راحتی با جاوااسکریپت می تونی رویداد های مربوط به هر شی را توسط اشیائ دیگر فراخوانی کنی

در برنامه زیر یک تابع تعریف کردم که پیغام check را نمایش می ده
یک دکمه با نام sending قرار دارد که مستقیما تابع check را فراخوانی می کنه
دکمه onclick_b1 تابع nob1_1 را فراخوانی می کنه که این تابع با استفاده از ID مربوط به دکمه sending که b1 نام دارد رویداد کلیک دکمه check را فراخوای می کند
رشته check هم همین کار را می کند


<html>
<head></head>
<body>
<script language="javascript" type="text/javascript">
function sending()
{
alert('check');
}
function onb1_1()
{
document.getElementById('b1').click();
}
</script>
<input type="button" id="b1" value="check" onclick="sending()" /><br />
<input type="button" onclick="onb1_1()" value="onclick()_b1()" /><br />
<strong onclick="onb1_1()">check</strong>
</body>
</html>


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

مهران رسا
پنج شنبه 07 شهریور 1387, 10:17 صبح
شما به راحتی با جاوااسکریپت می تونی رویداد های مربوط به هر شی را توسط اشیائ دیگر فراخوانی کنی


ممنون از راهنماییتون .

دوستان قبلاً به این موضوع اشاره داشتند . ولی مشکل اینجاست که میخوایم دکمه ای که در یک سایت دیگه وجود داره رو صدا کنیم . قرار نیست خودمون یک دکمه بسازیم و بعد صداش کنیم .

همونطور که گفتم . مثلاً شما اینجا کدی قرار بدی که دکمه تشکر در همین صفحه رو فراخوانی کنه .
http://barnamenevis.org/forum/images/buttons/post_thanks.gif (http://barnamenevis.org/forum/post_thanks.php?do=post_thanks_add&p=582138)


بله مي شه
ولي نه در حالتي . البته در مورد مرورگر هاي Mozilla Base

در مورد مرورگر هم فکر نمیکنم مشکل خاصی وجود داشته باشه . چون این برنامه قرار روی کامپیوتر خودمون اجرا بشه و نظارت و کنترل اون بر عهده خودمون هست . وقتی ببینم Firefox اجازه نمیده از Internet Explorer استفاده می کنم .

as13851365
پنج شنبه 07 شهریور 1387, 11:57 صبح
ممنون از راهنماییتون .
دوستان قبلاً به این موضوع اشاره داشتند . ولی مشکل اینجاست که میخوایم دکمه ای که در یک سایت دیگه وجود داره رو صدا کنیم . قرار نیست خودمون یک دکمه بسازیم و بعد صداش کنیم .

همونطور که گفتم . مثلاً شما اینجا کدی قرار بدی که دکمه تشکر در همین صفحه رو فراخوانی کنه .
http://barnamenevis.org/forum/images/buttons/post_thanks.gif (http://barnamenevis.org/forum/post_thanks.php?do=post_thanks_add&p=582138)


فکر نکنم باز مشکلی باشه !
یک راهی که به ذهن من می رسه این است که این سایت را در داخل سایت خود با استفاده از فریم باز کنیم و انوقت با استفاده از نام فریم سایت می تونید به محتوای سایت دسترسی داشته باشید
به عنوان مثال :
شما یک صفحه طراحی می کنید که داخلش دوتا فریم باشه توی فریم سمت چپ سایت شما و توی فریم سمت راست هر سایتی که می خواهید را قرار دهید خوب حالا با استفاده از نام فریم سمت راست و نام اشیای داخلش می تونید از فریم سمت چپ بهش دسترسی داشته باشید

مثلا می خواهید با استفاده از سایت خودتان در این سایت پست بدهید !
متن خود را در قسمت متن قرار داده و دکمه * ارسال جواب سریع * را بزنید

متن خود را با استفاده از نام فریم و آی دی (id="vB_Editor_QR_textarea") به سایت ارسال می کنید
با استفاده از نام فریم و آی دی (id="qr_submit") رویداد مربوطه را فراخوانی می کنید

as13851365
پنج شنبه 07 شهریور 1387, 17:08 عصر
من یک برنامه ای را برای این کار شبیه سازی کردم امیدوارم موثر واقع بشه !

شما یک فایل با نام asle.html ایجاد کنید و کد زیر را داخلش کپی کنید این فایل در واقع صفحه ای از صفحه هات شما می باشد


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<frameset rows="*" cols="200,100%" border="10" bordercolor="#00FF00">
<frame src="safheye_man.html" scrolling="no"/>
<frame src="a1.html" id="ss"/>
</frameset>
<noframes></noframes>
<body>
</body>
</html>


یک فایل با نام safheye_man.html ایجاد کنید و کد زیر را در داخلش کپی کنید این فایل محیط صفحه سایت شما می باشد



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<style type="text/css">
<!--
.style1 {color: #9933FF}
-->
</style>
</head>

<body>
<script language="javascript" type="text/javascript">
function psend()
{
parent.frames[1].document.getElementById('pname').value=document.g etElementById('a3').value;
parent.frames[1].document.getElementById('pfamily').value=document .getElementById('a3').value;
parent.frames[1].document.getElementById('memo1').value=document.g etElementById('a3').value;
parent.frames[1].document.getElementById('post1').submit();
}
</script>
<input id="a1" /><br />
<input id="a2" /><br />
<textarea id="a3" cols="20" rows="5"></textarea><br />
<input type="button" value="sending" onclick="psend()" />
</body>
</html>


یک فایل با نام a1.html ایجاد کنید و کد زیر را در داخلش وارد کنید ( این فایل صفحه مورد نظر برای استفاده در سایت خودتان می باشد )



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
<form action="a1.php" method="post" id="post1" onsubmit="alert('send . . .')">
name : &nbsp;<input type="text" name="pname"/><br />
family : <input type="text" name="pfamily"/><br />
matn : <textarea id="memo1" name="memo1" cols="30" rows="5"></textarea><br />
<input type="submit" />
</form>
</body>
</html>


اگر خواستید می توانید این فایل را هم کنار فایل ها قرار دهید تا برنامه مقادیر را به این صفحه ارسال کند برای این کار یک فایل با نام a1.php ایجاد کنید و کد زیر را داخلش قرار دهید


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
<?php
$pname=$_POST['pname'];
$family=$_POST['pfamily'];
$memo=$_POST['memo1'];
echo "name = $pname<br />family = $family <br />matne_name = $memo";
?>
</body>
</html>


در ادامه باید بگم که اگر تمام فایل ها را به صورت صحیح ایجاد کرده باشید وقتی که فایل asle.html را اجرا می کنید یک صفحه ای باز می شه که شامل دو فریم می باشد که شما از طریق صفحه سمت چپ مقادیر را به صفحه سمت راست ارسال می کنید و رویداد submit صفحه سمت راست را هم فراخوانی می کنید که باعث انتقال اطلاعات می شه

در ضمن شما می تونید با استفاده از تابع Window هم این کار را به صورت یک پنجره جداگانه انجام بدهید !

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