PDA

مشاهده نسخه کامل : رویداد کلیک در فریم html...؟



ABC.ABC
12-12-17, 17:18
سلام دوستان
یک صفحه ی html دارم که داخلش چند فریم هست ، میخوام داخل یکی از این فریم ها هر دفعه به صورت رندوم ی جای این فریم کلیک شه
چطور میتونم چنین کاری رو انجام بدم؟ ممنون

Speed Racer
12-12-17, 17:41
سلام

سوال شما واضح نیست که دقیقا چه کاری می خوای انجام بدی و کاربرد چی هست. اگه کامل توضیح بدی و کد رو قرار بدی شاید بتونم کمکت کنم

ABC.ABC
12-12-17, 17:54
سلام

سوال شما واضح نیست که دقیقا چه کاری می خوای انجام بدی و کاربرد چی هست. اگه کامل توضیح بدی و کد رو قرار بدی شاید بتونم کمکت کنم
ممنون از توجهتون
فایل پیوست رو دانلود کنید و فایل index.html رو باز کنید
میبینید که چند فریم وجود داره به طور مثال داخل یکی از فریم ها نوشتم 1 و داخل یک فریم دیگه نوشتم 2
حالا می خوام وقتی این صفحه باز میشه داخل فریم 2 یک کلیک انجام بشه (مختصاتش هم رندوم)

Speed Racer
12-12-17, 20:37
ممنون از توجهتون
فایل پیوست رو دانلود کنید و فایل index.html رو باز کنید
میبینید که چند فریم وجود داره به طور مثال داخل یکی از فریم ها نوشتم 1 و داخل یک فریم دیگه نوشتم 2
حالا می خوام وقتی این صفحه باز میشه داخل فریم 2 یک کلیک انجام بشه (مختصاتش هم رندوم)


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


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

دو راه داری یا اینکه در قسمت head یک تابع درست کنی و بعد در قسمت body اونو فراخوانی کنی یا اینکه مستقیم در قسمت body اسکریپت رو بنویسی


برای ایجاد تابع به این صورت باید عمل کنی



<script>

function myClick(){

}

</script>


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



<script>

myClick();

</script>


برای ایجاد متغیر هم باید از کلمه کلیدی var استفاده کنیم مثلا



<script>

function myClick(){
var x = 10;

}

</script>




برای ایجاد کلیک در نقاط مختلف ما به دو مختصات نیاز داریم x و y .

x یعنی مقدار فاصله از سمت چپ و y یعنی مقدار فاصله از بالا


چون ما می خواهیم که این اعداد همیشه یکی نباشن باید کاری کنیم که اعداد تصادفی ایجاد بشه

برای ایجاد اعداد تصادفی باید از تابع زیر استفاده کنیم. این تابع همیشه اعدادی بین 0 و یک را تولید می کند.


Math.random();

اینجا دو مشکل وجود داره یکی اینکه مختصات بین 0 و 1 نیست و دوم اینکه مختصات باید رند باشه برای اینکار از این راه حل استفاده می کنیم



var x = Math.random() * 100;



var x = Math.random() + 1;

با این روش عدد ما بزرگتر از 0 و 1 می شه ولی مشکلی که داره این هست که رند نیست برای رند کردن باید از روش زیر استفاده کنیم




var x = Math.floor(Math.random());


پس تا اینجا تابع ما به صورت زیر می شه که مختصات دو نقطه رو بدست آوردیم به صورت تصادفی



<script>

function myClick(){

var x = Math.floor(Math.random() * 10);

var y = Math.floor(Math.random() * 10 );


}

</script>


------------------------------------------


برای ایجاد کلیک به صورت خودکار این رو پیدا کردم.

مثلا شما باید اول یک id به body بدی که بتونی به اون دسترسی پیدا کنی و بعد اسکریپت زیر رو قرار بدی که کلیک به صورت اتوماتیک انجام بشه



<body id="myid">

<script>

document.getElementById(myid).click();

<script>

</body>





این کد رو هم پیدا کردم که می شه در نقطه دلخواه یک کلیک ایجاد بشه



<body>

<script>

document.elementFromPoint(x,y).click();

<script>

</body>



ولی اینکه چطوری باید اون دو نقطه x و y رو به این داد رو نتونستم پیدا کنم و نرم افزاری هم ندارم که بتونم اینا رو چک کنم چون من تازه برنامه نویسی سی شارپ رو شروع کردم و visual studio 2012 express desktop دارم که توش کد html قبول نمی کنه و باید نسخه کاملش رو داشته باشم


-------------------------


موقع جستجو این کدها رو هم پیدا کردم که شاید به درد شما بخوره گرچه ربطی به سوال شما نداره


کد1:



<script>

alert("Hello");

<script>



کد2:




<script>

document.write("Hi");

</script>


کد زیر هم باید رنگ بک گراند رو عوض کنه (مثلا به ذهنم رسید اگه می شد موقعی که یک کلیک اتفاق می افته رنگ بک گراند تغییر پیدا کنه خیلی جالب می شد)



<body id="myid">

<script>

document.getElementById("myid").style.backgroundColor = "#FF0000" (Only the registered members can see the link)

</script>

</body>

ABC.ABC
12-12-17, 21:34
همون طوری که گفتم دوست داشتم که کمکت کنم با اینکه چیزی از برنامه نویسی وب نمی دونم. از همون موقع خدا شاهده دارم می گردم و این چیزها رو پیدا کردم امیدوارم که به دردت بخوره و بتونی ازش یک راه حلی پیدا کنی


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

دو راه داری یا اینکه در قسمت head یک تابع درست کنی و بعد در قسمت body اونو فراخوانی کنی یا اینکه مستقیم در قسمت body اسکریپت رو بنویسی


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

Speed Racer
12-12-17, 21:44
خیلی خیلی ممنون واقعا زحمت کشیدید.....
این ایده که با هر کلیک رنگ عوض شه عالیه اما متاسفانه کار نکرد و فقط رنگ قرمز رو نشون میده ، برای تست می خواستم بزنم ببینم درست عمل می کنه یا نه

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

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

به نظرم اگه می شد هر کلیک با یک ip جعلی همراه باشه جالب می شد

ABC.ABC
12-12-17, 21:56
چون زمان کم بود نتونستم پیدا کنم چون شما عجله داری نمی شه کاری کرد

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

به نظرم اگه می شد هر کلیک با یک ip جعلی همراه باشه جالب می شد
اونقدر ها عجله خاصی ندارم به هر حال ممنون از کمکهاتون
من فقط با notepad++ ویرایش می کنم و دوباره با کروم باز می کنم چک می کنم
یعنی چطور هر کلیک با یک ip جعلی همراه باشه؟

Speed Racer
12-12-17, 22:38
اونقدر ها عجله خاصی ندارم به هر حال ممنون از کمکهاتون
من فقط با notepad++ ویرایش می کنم و دوباره با کروم باز می کنم چک می کنم
یعنی چطور هر کلیک با یک ip جعلی همراه باشه؟

اون ip که یک ایده بود


خوب notedpad++ رو دانلود کردم و خدا رو شکر خیلی کم حجم بود ولی کدی که تو اینترنت پیدا کردم رو تو فایرفاکس باز می کنم چیزی نشون نمیده احتمالا چون من فایرفاکس دارم اینطوری می شه اگه کروم داشتم درست نشون میداد (من از کروم خوشم نمیاد)

شات (Only the registered members can see the link)


شما کد های زیر رو با کروم امتحان کن ببین چطوری می شه چون اون تابعی که گفتم باید اینطوری نوشته بشه که من فقط اسمش رو عوض کردم چون یک اسم طولانی یکی براش گذاشته بود من عوضش کردم

این کدها نشون میده کجا باید تابع رو قرار بدی و چطوری فراخوانی کنی




<html>
<head>
]
<title>Untitled</title>

<script>
function myClick() {

alert("A click");
}
</script>

</head>
<body >

<script>
myClick();
</script>

</body>
</html>




متاسفانه تو فریم اینو پیدا نکردم که چطوریه ولی وقتی می خواستم ببینم کاربرد این کلمه frame چیه سایت زیر اینو نوشته بود که دیگه پشتیبانی نمی شه شاید به همین خاطره که جواب نمیده


Only the registered members can see the link

ABC.ABC
12-12-17, 23:17
اون ip که یک ایده بود


خوب notedpad++ رو دانلود کردم و خدا رو شکر خیلی کم حجم بود ولی کدی که تو اینترنت پیدا کردم رو تو فایرفاکس باز می کنم چیزی نشون نمیده احتمالا چون من فایرفاکس دارم اینطوری می شه اگه کروم داشتم درست نشون میداد (من از کروم خوشم نمیاد)

شات (Only the registered members can see the link)


شما کد های زیر رو با کروم امتحان کن ببین چطوری می شه چون اون تابعی که گفتم باید اینطوری نوشته بشه که من فقط اسمش رو عوض کردم چون یک اسم طولانی یکی براش گذاشته بود من عوضش کردم

این کدها نشون میده کجا باید تابع رو قرار بدی و چطوری فراخوانی کنی


متاسفانه تو فریم اینو پیدا نکردم که چطوریه ولی وقتی می خواستم ببینم کاربرد این کلمه frame چیه سایت زیر اینو نوشته بود که دیگه پشتیبانی نمی شه شاید به همین خاطره که جواب نمیده


Only the registered members can see the link
ممنون
اولی پیغام A click رو نمایش میده اوکی کنم [ رو نمایش میده
دومی فقط [ رو نمایش میده
مشکل من الان این هست که نمیفهمم آیا واقعا داره کلیک می کنه یا نه
برای مشکل شما با فایرفاکس هم چرا نوشته .new 1 ؟ احتمالا فراموش نکردید که htmi رو نذاشته باشید؟
کدی که می خوام باید همه جا هم اجرا شه و فک نکنم این کدها چیزی باشن که یک مرورگر نتونه اجرا کنه + برای frame مشکلی نیست من داخل html اصلی مینویسم مختصات فریم رو میدم که اون حدود کلیک انجام شه

Speed Racer
12-12-17, 23:58
ممنون
اولی پیغام A click رو نمایش میده اوکی کنم [ رو نمایش میده
دومی فقط [ رو نمایش میده
مشکل من الان این هست که نمیفهمم آیا واقعا داره کلیک می کنه یا نه
برای مشکل شما با فایرفاکس هم چرا نوشته .new 1 ؟ احتمالا فراموش نکردید که htmi رو نذاشته باشید؟
کدی که می خوام باید همه جا هم اجرا شه و فک نکنم این کدها چیزی باشن که یک مرورگر نتونه اجرا کنه + برای frame مشکلی نیست من داخل html اصلی مینویسم مختصات فریم رو میدم که اون حدود کلیک انجام شه


دوست عزیز معذرت خواهی می کنم که نتونستم کدی که می خوای رو پیدا کنم

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




<html>
<head>

<title>Untitled</title>

<script>

function myClick() {
document.elementFromPoint(10,20).click();

}
</script>

</head>
<body>
<script>
myClick();
</script>

</body>
</html>

در نقطه 10 و 20 احتمالا یک کلیک ایجاد می شه


آخرش html گذاشتم درست شد ولی برای من هم نشون نمیده که کلیک شده ولی خوب کلیک شدن که نشون دادنی نیست. ایدم اینه یک تابع بنویسی که تعداد کلیک ها رو نشون بده


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



Only the registered members can see the link

ABC.ABC
13-12-17, 22:51
دوست عزیز معذرت خواهی می کنم که نتونستم کدی که می خوای رو پیدا کنم

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


در نقطه 10 و 20 احتمالا یک کلیک ایجاد می شه


آخرش html گذاشتم درست شد ولی برای من هم نشون نمیده که کلیک شده ولی خوب کلیک شدن که نشون دادنی نیست. ایدم اینه یک تابع بنویسی که تعداد کلیک ها رو نشون بده


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



Only the registered members can see the link
سلام
عزیز دیگه بیش از این شرمندمون نکن شما خیلی هم لطف کردی....:11():
این امکان هست که یک تایمر باشه و زمانی که صفحه باز میشه 2 ثانیه بعدش کلیک انجام شه؟ (چون میخوام کامل لود شده باشه بعد کلیک انجام شه)
اینکه هر ثانیه یک کلیک هم انجام شه جالب میشه....

ABC.ABC
16-12-17, 16:21
سلام دوستان
میخوام زمانی که روی صفحه کلیک میشه رنگ پس زمینه تغییر کنه.... کسی از دوستان کدش رو داره؟
حلقه رو در جاوا اسکریپت یاد گرفتم دوستمون هم که کد کلیک کردن رو گذاشتند ، حالا میخوام ببینم چیزی که نوشتم داره درست عمل میکنه یا خیر
ممنون

ravegoat
17-12-17, 06:58
سلام دوستان
میخوام زمانی که روی صفحه کلیک میشه رنگ پس زمینه تغییر کنه.... کسی از دوستان کدش رو داره؟
حلقه رو در جاوا اسکریپت یاد گرفتم دوستمون هم که کد کلیک کردن رو گذاشتند ، حالا میخوام ببینم چیزی که نوشتم داره درست عمل میکنه یا خیر
ممنون
سلام،

بفرمایید این کدشه :


<html>
<head>
<script src="Only the registered members can see the link"></script>
</head>
<body>

<script>
$(document).click(function(e) {
document.body.style.backgroundColor = "blue";
});
</script>

</body>
</html>



بنده رویداد کلیک رو به body متصل کردم. حالا اگر شما تمایل دارید می تونید رویداد رو به المان دیگری متصل کنید. در ضمن برای تستش به اینترنت متصل باشد چون مرجع jquery رو به شکل محلی ندادم.

موفق باشید
آرمین :11():

ABC.ABC
17-12-17, 10:35
سلام،

بفرمایید این کدشه :
[HTML]<html>
بنده رویداد کلیک رو به body متصل کردم. حالا اگر شما تمایل دارید می تونید رویداد رو به المان دیگری متصل کنید. در ضمن برای تستش به اینترنت متصل باشد چون مرجع jquery رو به شکل محلی ندادم.

موفق باشید
آرمین :11():
سلام
خیلی ممنون درسته و کار می کنه ، همچنین کدی که دوستمون دادن برای کلیک کردن اتوماتیک
اما اینجا ی مشکلی هست ، کدی که دادید رو داخل فایلی به نام temp3.html گذاشتم که یک فریم هست در صفحه ی اصلی ، در این حالت اتوماتیک روی این فریم کلیک انجام نمیشه : (اگه خودم کلیک کنم درسته اما خودش تغییر رنگ نمیده)

<html>

<head>




<script>


function myClick() {
document.elementFromPoint(10,20).click();

}
</script>




<title>سایت موقتا بسته می باشد</title>
</head>




<p id="timeLable"></p>


<script>
//فراخوانی متد clock در فواص زمانی 1 ثانیه
var myVar=setInterval(function(){clock()},1000);


function clock() {


myClick();
}
</script>








<frameset cols="50%,50%">


<frame src="temp3.html">
<frame>




</frameset>






</html>





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

ravegoat
17-12-17, 12:52
خواهش می کنم،

دوست گرامی اون کد مربوط به کلیک کردن، روی فریم کلیک می کنه نه محتویات فریم. فایل temp3 جز محتویات فریم شما محسوب میشه. با کد زیر مشکل حل میشه:


<html>
<head>
<script>
function myClick() {
var x = document.getElementById("frm");
var y = (x.contentWindow || x.contentDocument);
if (y.document)y = y.document;
y.elementFromPoint(10, 20).click();
}
</script>
<title>سایت موقتا بسته می باشد</title>
</head>
<p id="timeLable"></p>
<script>
//فراخوانی متد clock در فواص زمانی 1 ثانیه
var myVar=setInterval(function(){clock()},1000);

function clock() {
myClick();
}
</script>
<frameset cols="50%,50%">
<frame id="frm" src="temp3.html">
<frame>
</frameset>
</html>


شاد و موفق باشید
آرمین :give_rose:

ABC.ABC
17-12-17, 13:54
خواهش می کنم،

دوست گرامی اون کد مربوط به کلیک کردن، روی فریم کلیک می کنه نه محتویات فریم. فایل temp3 جز محتویات فریم شما محسوب میشه. با کد زیر مشکل حل میشه:


<html>
<head>
<script>
function myClick() {
var x = document.getElementById("frm");
var y = (x.contentWindow || x.contentDocument);
if (y.document)y = y.document;
y.elementFromPoint(10, 20).click();
}
</script>
<title>سایت موقتا بسته می باشد</title>
</head>
<p id="timeLable"></p>
<script>
//فراخوانی متد clock در فواص زمانی 1 ثانیه
var myVar=setInterval(function(){clock()},1000);

function clock() {
myClick();
}
</script>
<frameset cols="50%,50%">
<frame id="frm" src="temp3.html">
<frame>
</frameset>
</html>


شاد و موفق باشید
آرمین :give_rose:
ممنونم لطف کردید
اما بازم کار نکرد فایل رو باز هم پیوست کردم نفهمیدم مشکل از کجاست

Speed Racer
17-12-17, 15:21
من بالاخره فهمیدم که مشکل از کجاست

همه صفحه های html داخلشون body دارن و مال شما نداره


حالا من از مجموع سایت هایی که جستجو کردم نتیجش رو میذارم که 50 درصد راهه که بقیش رو شما باید خودت ببری چون من نه html بلد هستم و نه javascript چون فعلا دارم سی شارپ یاد می گیرم.


لینک (Only the registered members can see the link)


مرجع کد:



Only the registered members can see the link

ABC.ABC
17-12-17, 15:29
من بالاخره فهمیدم که مشکل از کجاست

همه صفحه های html داخلشون body دارن و مال شما نداره


حالا من از مجموع سایت هایی که جستجو کردم نتیجش رو میذارم که 50 درصد راهه که بقیش رو شما باید خودت ببری چون من نه html بلد هستم و نه javascript چون فعلا دارم سی شارپ یاد می گیرم.


لینک (Only the registered members can see the link)


مرجع کد:



Only the registered members can see the link
سلام
ممنون لطف کردید
شک دارم مشکل از body باشه ، چون برای فریم ها گذاشتم کلا فریم ها رو نشون نداد
راستش خودم هم چون زیاد بلند نیستم اینجا می پرسم تا دوستان راهنمایی کنند

ravegoat
17-12-17, 19:10
ممنونم لطف کردید
اما بازم کار نکرد فایل رو باز هم پیوست کردم نفهمیدم مشکل از کجاست
خواهش می کنم.

احتمالا با کروم یا IE تست فرمودید. این کد با تمام مرورگر ها سازگاره؛ فقط به خاطر سیاست امنیتی Same Origin، شاید برخی از مرورگر ها جلوی اجراشو بگیرن. صرفا جهت اطلاع بیش تر عرض می کنم:


طبق این سیاست هیچ کد جاوا اسکریپتی اجازه ی دسترسی به محتویات یک فریم را نداره مگر این که پروتکل، دامنه و درگاه مجری کد با پروتکل، دامنه و درگاه نشانی منبع فریم برابری کنه (منبع (Only the registered members can see the link)).

شاید از خودتون بپرسید که پروتکل، دامنه و درگاه temp و temp3 که با هم برابره (هر دو local هستن) و سیاست بالا رو نقض نمی کنه؛ پس مشکل از کجاست! کروم به سیاست بالا یک شرط اضافه کرده که طبق اون اگر پروتکل، دامنه و درگاه مربوط به یک نشانی local باشن، همچنان اجازه ی اجرای کد رو نمیده (منبع (Only the registered members can see the link)). بنده تست نکردم ولی احتمالا اگر کد ها رو روی یک وب سرور اجرا کنید مشکل با کروم حل بشه.

در نهایت این کد بر روی فایرفاکس کوانتوم بدون مشکل کار می کنه. اگر مطابق این آموزش (Only the registered members can see the link) هم تنظیمات امنیتی کروم رو موقتا غیر فعال بفرمایید، روی کروم هم جواب میده.

ABC.ABC
19-12-17, 10:14
خواهش می کنم.

احتمالا با کروم یا IE تست فرمودید. این کد با تمام مرورگر ها سازگاره؛ فقط به خاطر سیاست امنیتی Same Origin، شاید برخی از مرورگر ها جلوی اجراشو بگیرن. صرفا جهت اطلاع بیش تر عرض می کنم:

شاید از خودتون بپرسید که پروتکل، دامنه و درگاه temp و temp3 که با هم برابره (هر دو local هستن) و سیاست بالا رو نقض نمی کنه؛ پس مشکل از کجاست! کروم به سیاست بالا یک شرط اضافه کرده که طبق اون اگر پروتکل، دامنه و درگاه مربوط به یک نشانی local باشن، همچنان اجازه ی اجرای کد رو نمیده (منبع (Only the registered members can see the link)). بنده تست نکردم ولی احتمالا اگر کد ها رو روی یک وب سرور اجرا کنید مشکل با کروم حل بشه.

در نهایت این کد بر روی فایرفاکس کوانتوم بدون مشکل کار می کنه. اگر مطابق این آموزش (Only the registered members can see the link) هم تنظیمات امنیتی کروم رو موقتا غیر فعال بفرمایید، روی کروم هم جواب میده.
سلام
بله با کروم تست کردم با اپرا هم تست کردم این مشکل رو داشت ، با ie که تست کردم ی پیام داد و اجازه خواست و بهش دادم درست شد
بله درسته روی وب سرور تست کردم با کروم بدون مشکل کار کرد
خیلی لطف کردید ممنونم :11():