PDA

View Full Version : سوال: آیا می‏شود در بسته شدن ToolTip ها تاخیر ایجاد کرد؟



Parham.D
دوشنبه 07 دی 1388, 09:22 صبح
سلام به مدیران عزیز.

وقتی روی عنوان هر تاپیک چند لحظه ماوس را نگه میداریم یک ToolTip باز میشه و مقداری از محتوای تاپیک را نشان میده. اما زود بسته میشه و باید دوباره به آن اشاره کرد. آیا امکانش هست که در بسته شدن این ToolTip ها تاخیر بیشتری ایجاد کرد؟

ممنون . . . .

mehdi.mousavi
سه شنبه 08 دی 1388, 15:03 عصر
سلام به مدیران عزیز. وقتی روی عنوان هر تاپیک چند لحظه ماوس را نگه میداریم یک ToolTip باز میشه و مقداری از محتوای تاپیک را نشان میده. اما زود بسته میشه و باید دوباره به آن اشاره کرد. آیا امکانش هست که در بسته شدن این ToolTip ها تاخیر بیشتری ایجاد کرد؟ ممنون . . . .

سلام.
البته که شدنی هستش... دو راه برای حل این مشکل وجود داره. یکی اینکه سمت سرور، مسئولین این کار رو انجام بدن (که خوب، ارجحیت داره). یکی اینکه خود شما صفحه رو به سلیقه و نیاز خودتون سمت Client تغییر بدید. من در این نوشته روش دوم رو براتون توضیح میدم.

ابتدا FireFox رو Download و نصب کنید (http://www.mozilla.com/en-US/) (اگر تا به حال اینکارو نکرده اید). سپس، به این سایت (https://addons.mozilla.org/en-US/firefox/addon/748) برید و Greasemonkey رو که اجازه اجرای کدهای JavaScript رو به شما (سمت Client) میده، به FireFox خودتون اضافه کنید. بعد از اینکه FireFox رو Restart کردید، متوجه آیکون Greasemonkey در Status bar مرورگر میشید. روی این آیکون Right-Click کرده، New User Script رو انتخاب کنید.

سپس به ترتیب بخشهای زیر رو با این داده ها پر کنید:


Name: Barnamenevis
Namespace: http://barnamenevis.org
Includes: http://barnamenevis.org/forum/*

حالا کلید OK رو فشار بدید و Notepad.exe رو از دایرکتوری Windows خودتون انتخاب کنید. (اگر از سیستم عامل دیگه ای غیر از Windows استفاده می کنید، میتونید Editor دلخواه خودتون رو انتخاب کنید). اکنون، JavaScript زیر رو در Notepad پیست کنید:


//Written by Mehdi Mousavi
var GM_JQ = document.createElement('script');
GM_JQ.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js';
GM_JQ.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(GM_JQ);

function GM_wait() {
if(typeof unsafeWindow.jQuery == 'undefined') { window.setTimeout(GM_wait,100); }
else { $ = unsafeWindow.jQuery; letsJQuery(); }
}
GM_wait();

function letsJQuery() {
$('#threadslist td.alt1').hover(function(){
var text = $(this).attr('title');
$('<div id="hot_title" />').html(text).prependTo($(this));
}, function(){
$('#hot_title').remove();
});
}

سپس Notepad رو ببندید. اکنون URL سایت برنامه نویس رو توی FireFox وارد کنید. Mouse رو روی هر یک از نوشته ها ببرید، یک (یا چند خط) به اون ردیف اضافه میشه، و پیامی که در Tooltip بود، در خود ردیف نشون داده میشه. Mouse رو از روی Row کنار ببرید، تا نوشته از بین بره. (Snapshot ای از یک Row که موس رو روش بردم و Title مزبور درون همون ردیف نشون داده شده رو ضمیمه کردم).

موفق باشید.

پاورقی: اما Script فوق چی کار میکنه؟ این Script (http://joanpiedra.com/jquery/greasemonkey/)، ابتدا jQuery رو از سایت Google لود می کنه تا بشه با jQuery توی صفحات دست برد... سپس، به تابع letsJQuery میرسیم، که در واقع کار اصلی رو ما در این تابع انجام میدیم. به این ترتیب که Element مورد نظر رو پیدا می کنیم، و hover event رو بهش bind میکنیم. بقیه اشم که مشخصه.

mehdi.mousavi
سه شنبه 08 دی 1388, 17:12 عصر
سلام.
من Script فوق رو تغییر دادم تا واقعا کاربردی بشه:

//Written by Mehdi Mousavi
var GM_JQ = document.createElement('script');
GM_JQ.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js';
GM_JQ.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(GM_JQ);

function GM_wait() {
if (typeof unsafeWindow.jQuery == 'undefined') { window.setTimeout(GM_wait, 100); }
else { $ = unsafeWindow.jQuery; letsJQuery(); }
}
GM_wait();

function letsJQuery() {
$('#threadslist tr td:nth-child(3).alt1').each(function() {
var title = $(this).attr('title');
$(this).removeAttr('title').attr('alt', title);
}).hover(function() {
var title = $(this).attr('alt');
if (title && title.length) {
$('<div id="hot_title" />').html(title).css({'background-color': '#fff'}).insertAfter($(this).css('border', '1px solid #888').find('div:last'));
}
}, function() {
$(this).css('border', '');
$('#hot_title').remove();
});
}

موفق باشید.

ati777
چهارشنبه 07 بهمن 1388, 09:40 صبح
[quote=mehdi.mousavi;877388]سلام.
البته که شدنی هستش... دو راه برای حل این مشکل وجود داره. یکی اینکه سمت سرور، مسئولین این کار رو انجام بدن (که خوب، ارجحیت داره). یکی اینکه خود شما صفحه رو به سلیقه و نیاز خودتون سمت Client تغییر بدید. من در این نوشته روش دوم رو براتون توضیح میدم.



سلام ،
میشه لطفأ روش سمت سرور رو هم توضیح بدین .من میخوام اینکارو سمت server انجام بدم.پیشاپیش ممنونم