PDA

View Full Version : حذف راست کلیک از یک تگ



barnamenevis2016
سه شنبه 23 تیر 1394, 01:40 صبح
سلام...من یک نگ canvas دارم...می خوام کاربر اگر روش کلیک راست کرد...اگر منویی ظاهر می شه..منوی مربوط به اون تگ canvas نباشه..مثلا اگر زیر تگ canvas یک نگ img باشه...منوی مربوط به اون تگ ظاهر بشه که مثل تصویر img رو ذخیره کنه و خلاصه می خوامطوری بشه که انگار که اصلا تگ canvas ای رو کاربر کلیک راست نکرده....
مثلا این لینک رو ببینید: **** ..میبینید که من یگ تگ canvas ساختم..می خوام کاربر روی اون کلیک راست کرد... طوری مرورگر عمل کنه که انگاری کاربر روی body کلیک کرده و اصلا اون canvas رو به حساب نیاره...دوستان جواب بدید

H:Shojaei
سه شنبه 23 تیر 1394, 03:52 صبح
با جیکوئری یا جاوااسکریپت؟
این با جیکوئری:

$('body').on('contextmenu', '.my-canvas', function(e){ return false; });

barnamenevis2016
سه شنبه 23 تیر 1394, 04:42 صبح
البته با جاوا اسکریپت باشه که بهتره و سیعی می کنم که اصلا در کدام هیج جی کوئری ای استفاده نکنم...و بعد اینکه..مرسی ولی این کد رو زدم و هیچ تغییری ندیدم....و هیچ تاثیری نداشت کد..فکر کنم اشتباهی صورت گرفته...
مثلا کد زیر رو امتحان کنید:

<canvas class=".my-canvas" style="border: 12px solid"></canvas>
<script>

$('body').on('contextmenu', '.my-canvas', function(e){ return false; });

</style>و از طرفی من حسم می کنم که این کد خواستمو برابرده نمی کنه . فکر می کنم این کد تنها می آد راست کلیک رو غیر فعال می کنه...ولی من نمی خوام راست کلیک غیر فعال بشه..بلکه می خوام وقتی کاربر روی اون canvas کلیک کرد..عین این باشه روی تگ زیرین اون canvas کلیک کرده... همچینی چیزی شدنیه؟ :متفکر:

H:Shojaei
سه شنبه 23 تیر 1394, 05:08 صبح
بله خوب من مثال زدم واسه این که رویداد راست کلیک رو متوجه بشید... جای اون return هر چیزی بخواید میتونید بنویسید مثلا:

$('body').rightClick();

یه سوال چرا نمیخواید از جیکوئری استفاده نکنید؟

barnamenevis2016
سه شنبه 23 تیر 1394, 07:16 صبح
مرسی...ولی بازم کارگر نبود و من به نتیجه ای نرسیدم نهایت می شه راست کلیک رو به تمامی غیر فعال کرد.دیگه ظاهر شدن منوی دیگری، مثل منوی body رو نتونستم...
اگر می شد..جالب می شد و کارای جالبی فکر می کنم می شد باهاش کرد:متفکر:


راستش..از جی کوئری استفاده نمی کنم...شاید بیشتر سلیقه ای و شخصی باشه...دوس دارم از یک نیمچه فریمورکی که خودم می نویسم و هرباره دارم رشدش می دم استفاده کنم و از خود جاوا استفاده کنم..
البته این کد رو در این مورد خاص برای یک فریم ورکی که سعی می کنم به نتیجه برسونمش می خواستم، فریم ورکی برای ساخت اشیاء دوبعدی و انیمیشن و دینامیک و بازی سازی و اینجور مسائل استفاده بشه. و دیگه فکر نمی کنم، معقول باشه که در داخل یک فریم ورکی که می نویسیم از فریم ورکی دیگه مثل جی کوئری استفاده کنیم..اونم در حالی که امید داریم که بتونیم به جایی برسونیمش که برای دیگران هم به کار بیار، اینجوری ملزم می کنیم کاربر رو که حتمی از جیکوئری استفاده کنه :لبخند:

H:Shojaei
سه شنبه 23 تیر 1394, 09:11 صبح
اصلا محصول یا هر چیزی که شما میسازید ربطی به کاربر نداره که با چی ساختید(مگر عده خواصی که بیش از حد وسواس دارن که نهایتا هم خودشون همه کاراشون رو میکنن ربطی هم به ابزاری که شما استفاده کردید نداره)... مهم اون کاری که انجام میده و میزان کارایی که داره...
و من نمیدونم چطور فریم ورکی دارید میسازید ولی اگر نتونید همین کار به این سادگی مثل ریرایت کردن یک کلیک راست ساده که با یه جستجو میشه انجامش داد (خودم اولین بار جستجو کردم کدشم پیدا کردم با جاوااسکریپت بود و حوصله توضیحش نبود) رو انجام بدین و ازش به همین راحتی بگذرید به نظرم ساخت فریم ورک رو هم متوقف کنید چون در آینده این کار در برابر کارهایی که لازم میشه انجام بدین هیچی نیست...

barnamenevis2016
سه شنبه 23 تیر 1394, 13:09 عصر
اگر منظورتون رو درست فهمیده باشم...ببینید این فریم ورک کارش پردازش تصویر و نهایت دوست دارم شبیه به یک موتور بازی باشه...من چند سال با نرم افزار های سه بعدی کار کردم..یک جورایی باهاشون زندگی کردم و قورتشون دادم...از ریز و خمشون آشنا هستنم..و نحوه و الگوریتم های ریاضی که لازمه تا مثلا دینامیک برخورد چند شی رو پیاده سازی کرد آشنا شدم و با زبان پایتون پیاده سازی کردم...و مهم و مهم ایناست..این توابع ریاضی و الگوریتم ها و ساختار اصلی کدا مهمه....در مورد این کار ساده ای که شما می فرمایید هم والا من گشتم، چیزی در موردش پیدا نکردم.(احتمالا یک دستوری لازمه بدونم که نمی دونمش دیگه!!) ..خلاصه این پیدا نکردن و ندونستن، در برابر اون اصلیات و اون الگوریتمها اصلا به چشم نمی آد و اصلا مهم نیست آنچنان....خیلی راحت می شه اینا رو به هر حال با جست و جو پیدا کرده..البته امیدوارم منظورتون رو فهمیده باشم..حالا شما می گی اینکاری که من می خوام واقعا شدنیه؟؟می شه لینکی در موردش بدید....حتی همون کدی که شما دادید رو من قبلا هم تست کرده بودم..به شکلی ولی دیده بودم که تنها برای حذف و شخصی سازی منوی راست کلیک می تونه به کار بره..اون بالا هم نوشتم که حس می کنم این کد خواسته من رو برابرده نمی کنه...اگر لینکی در این باره سراغ دارید...ممنون می شم نشون بدید.و من بیشتر و یا شاید تنها منظورم اینه که تگ زیر به حساب بیاد..یعنی نه تگ body...مثلا شما یک نمونه مثال زدید..اون اگر مستیقما کار می کرد که منوی Body رو نمایان می کرد...حالا اگر زیر canvas یک تگ img باشه چی؟و خلاصه من که جست و جو کردم، نبود
در مورد بند اولیتون.من منظورتون رو نفهمیدم....شما نوشتید که چیزی که شما می سازید ربطی به کاربر نداره که با چی می سازیدش..من منظورتون رو نفهمیدم..من سعی دارم فریم ورکی بسازم که به کار دیگران بیاد....خوب من اگر از جی کوئری استفاده کنم در فریم ورک...کاربر رو ملزم می کنم برای استفاده از اون فریم ورک من، جی کوئری رو استفاده کنه..در حالی که شاید به دلایلی کاربر نمی خواد از جی کوئری استفاده کنه!!و اونوقت اگر فریم ورک های مشابه ادعا می کنند که تنها 40 کیلوبایت هستند..من باید بگم شما باید 100 کیلو بایت جی کوئری رو هم استفاده کنید...این حرفه ای نیست و ظاهر خوبی نداره

H:Shojaei
سه شنبه 23 تیر 1394, 14:07 عصر
یک مثلا ساده:

$('.my-canvas').bind("contextmenu", function(event) {
alert()
event.preventDefault();
$("<div class='custom-menu'>Custom menu</div>")
.appendTo("body")
.css({top: event.pageY + "px", left: event.pageX + "px"});
});

$(document).bind("click", function(event) {
$("div.custom-menu").hide();
});




.custom-menu {
z-index:1000;
position: absolute;
background-color:#FAFAFA;
border: 1px solid black;
padding: 2px;
}

H:Shojaei
سه شنبه 23 تیر 1394, 14:32 عصر
بلکه می خوام وقتی کاربر روی اون canvas کلیک کرد..عین این باشه روی تگ زیرین اون canvas کلیک کرده... همچینی چیزی شدنیه؟ :متفکر:
ظاهرا نشدنیه!!!!!!!!!
برای اولین بار یک چیز غیر ممکن دیدم! ولی باز هم میشه روش کار کرد الآن حسش نیست بعدا میرم سراغش نتیجه ای شد خبر میدم... (هنوز هم معتقدم غیر ممکن نداریم توی وب مگر این کار نشه...)

H:Shojaei
سه شنبه 23 تیر 1394, 14:41 عصر
البته میشه دورش زد به این صورت:


<div style="width: 100px;height: 100px;background-color: #B71C1C;">
<canvas class="my-canvas" id="my-canvas" style="width:100px;height: 100px;background-color: #ababab;"></canvas>
<div style="position: relative;width:100%;height: 100%;top: -100px;left: 0px;"></div>
</div>