View Full Version : سوال: obj.click() در firefox کار نمیکنه
I,Nobody
سه شنبه 18 تیر 1387, 20:55 عصر
سلام.
من یه لینک توی صفحه دارم.
می خوام تحت شرایط خاصی کلیک شه
<a id=my_link href='#top'>Link</a>
<script>
document.getElementById('my_link').click();
</script>
همونطور که می دونید این اسکریپت توی IE کار میکنه. ولی توی FF نه.
جایگزینش چیه؟
Tnx all
org.kiani
سه شنبه 18 تیر 1387, 23:44 عصر
سلام،
امید وارم این کد به شما کمک کنه، البته اینو همین الان یادگرفتم. :)
<a id="my_link" href="#top" onclick="location.href = this.href">Link</a>
<script>
function displayError() {
// Display error message
}
try {
document.getElementById( 'my_link' ).click();
} catch( err1 ) {
try {
var evt = document.createEvent( 'MouseEvents' );
evt.initMouseEvent( 'click', true, true, window,0, 0, 0, 0, 0, false, false, false, false, 0, null );
var cb = document.getElementById( 'my_link' );
cb.dispatchEvent( evt );
} catch( err2 ) {
displayError();
}
}
</script>
این هم آدرس آموزش ایجاد و شبیه سازی رویداد در firefox :
http://developer.mozilla.org/en/docs/DOM:document.createEvent
I,Nobody
شنبه 22 تیر 1387, 08:59 صبح
مرسی ولی کار نمیکنه.
توی IE ارور میده. توی FF ارور نمیده و توی هیچکدوم کار نمیکنه
org.kiani
یک شنبه 23 تیر 1387, 11:24 صبح
سلام
من اینو قبل از اینکه پست کنم توی ie6 (التبه ie4linux ) و ff3 و opera9.5 تست کردم مشکلی نداشت. میشه بگید چه اروری میده؟
I,Nobody
دوشنبه 24 تیر 1387, 09:05 صبح
Object Dosen't support this property or Method
منظور createEvent هست
<table style="height: 1000px">
<tr><td height=30>Hello</td></tr>
<tr><td valign=bottom><p><a href=#top id=topClick>Top</a><br>
<button onclick='simulateClick();'>Click for Simulate</button>
</p>
</td></tr>
</table>
</body>
<script>
function simulateClick() {
var evt = document.createEvent("MouseEvents");
evt.initMouseEvent("click", true, true, window,
0, 0, 0, 0, 0, false, false, false, false, 0, null);
var cb = document.getElementById("topClick");
var canceled = !cb.dispatchEvent(evt);
if(canceled) {
// A handler called preventDefault
alert("canceled");
} else {
// None of the handlers called preventDefault
alert("not canceled");
}
}
</script>
org.kiani
دوشنبه 24 تیر 1387, 10:04 صبح
دوست عزیز جناب I,Nobody ،
این کد شما فقط مال ff هستش . این کد برای اینکه برای درتگ a کار بده باید شما این صفت و مقدار رو در تگ a اضافه کنید :
onclick="location.href = this.href"
همونطور که من در کد بالا از try و catch استفاده کردم شما هم استفاده کنید :
try {
document.getElementById( 'my_link' ).click();
} catch( err1 ) {
try {
var evt = document.createEvent( 'MouseEvents' );
evt.initMouseEvent( 'click', true, true, window,0, 0, 0, 0, 0, false, false, false, false, 0, null );
var cb = document.getElementById( 'my_link' );
cb.dispatchEvent( evt );
} catch( err2 ) {
displayError();
}
}
try اولی مربوط به ie میشه try دومی مربوط به ff .
شما در کدتون فقط شبیه سازی رویداد در ff رو اضافه کردید، برای همین ie اون error رو میده.
فکر کنم اگه از اون کدی که در پست قبلی براتون گذاشتم استفاده کنید مشکل حل بشه!
I,Nobody
دوشنبه 24 تیر 1387, 10:23 صبح
ببخشید من اینجا کد قبلی رو ناقص گذاشته بودم(سهواً)
بله مورد استفاده try و catch رو میدونم.
مشکل من با گذاشتن همون کد مربوط به location.href حل شد.
خیلی خیلی ممنونم.
<table style="height: 1000px">
<tr><td height=30>Hello</td></tr>
<tr><td valign=bottom><p><a href=#top id=topClick onclick='location.href=this.href'>Top</a><br>
<button onclick='simulateClick();'>Click for Simulate1</button><br>
<button onclick='simulateClick2();'>Click for Simulate2</button>
</p>
</td></tr>
</table>
</body>
<script>
function simulateClick() {
var evt = document.createEvent("MouseEvents");
evt.initMouseEvent("click", true, true, window,
0, 0, 0, 0, 0, false, false, false, false, 0, null);
var cb = document.getElementById("topClick");
cb.dispatchEvent(evt);
}
function simulateClick2(){
try {
document.getElementById( 'topClick' ).click();
} catch( err1 ) {
try {
simulateClick();
return;
var evt = document.createEvent( 'MouseEvents' );
evt.initMouseEvent( 'Click', true, true, window,0, 0, 0, 0, 0, false, false, false, false, 0, null );
var cb = document.getElementById( 'topClick' );
cb.dispatchEvent( evt );
} catch( err2 ) {
displayError();
}
}
}
</script>
org.kiani
دوشنبه 24 تیر 1387, 10:30 صبح
خوشحالم از اینکه تونستم کمکتون کنم. :)
saeidejafari
دوشنبه 24 تیر 1387, 11:18 صبح
سلام!
منم میخوام با این کد فرممو سابمیت کنم که توی IE درست کار میکنه ولی توی FF کار نمیکنه!
<table width="150" class="borders" style="cursor:hand " onMouseOver="javascript:this.bgColor='#F0F7F0'" onMouseOut="javascript:this.bgColor='#FFFFFF'" border="0" align="center" cellpadding="2" cellspacing="2" onClick="submit();" >
<tr>
<td height="20" align="center" valign="middle" class="global_text"><img src="./etc/images/images/save.png" border="0" class="hand" alt="ذخيره"></td>
<td align="center" valign="middle" class="global_text">ذخيره</td>
</tr>
</table>
رویداد submit رو چطوری شبیه سازی کنم؟؟
saeidejafari
دوشنبه 24 تیر 1387, 11:46 صبح
اینجوری نوشتم درست شد
function submitform() {
var formToSend = document.getElementById("form2");
formToSend.submit();
}
<table width="150" class="borders" style="cursor:hand " onMouseOver="javascript:this.bgColor='#F0F7F0'" onMouseOut="javascript:this.bgColor='#FFFFFF'" border="0" align="center" cellpadding="2" cellspacing="2" onClick="javascript: submitform()">
<tr>
<td height="20" align="center" valign="middle" class="global_text"><img src="./etc/images/images/save.png" border="0" class="hand" alt="ذخيره"></td>
<td align="center" valign="middle" class="global_text">ذخيره</td>
</tr>
</table>
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.