Нет, я не думаю, что есть способ по-другому связать поведение кнопки закрытия по умолчанию. Тем не менее, вы можете приблизить желаемый результат, потратив немного больше времени: создав пользовательский информационный блок с тем же стилем, и вы получите 100% контроль:
например. (обратите внимание на обработчик onClick
на кнопке div):
var center = map.getCenter();
var infoboxTemplate = '<div class="Infobox" style=""><a class="infobox-close" href="javascript:void(0)" onClick="function test(){ alert(\'test!\'); } test(); return false;" style=""><img class="infobox-close-img" src="data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjE0cHgiIHdpZHRoPSIxNHB4IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiPjxwYXRoIGQ9Ik03LDBDMy4xMzQsMCwwLDMuMTM0LDAsN2MwLDMuODY3LDMuMTM0LDcsNyw3YzMuODY3LDAsNy0zLjEzMyw3LTdDMTQsMy4xMzQsMTAuODY3LDAsNywweiBNMTAuNSw5LjVsLTEsMUw3LDhsLTIuNSwyLjVsLTEtMUw2LDdMMy41LDQuNWwxLTFMNyw2bDIuNS0yLjVsMSwxTDgsN0wxMC41LDkuNXoiLz48L3N2Zz4=" alt="close infobox"></a><div class="infobox-body" style="max-width: 256px; max-height: 126px; width: 125px;"><div class="infobox-title" >{title}</div><div class="infobox-info" style=""><div>{description}</div></div><div class="infobox-actions" style="display: none;"><ul class="infobox-actions-list"><div></div></ul></div></div><div class="infobox-stalk" style="top: 73.8px; left: 55.5px;"></div></div>';
var infobox = new Microsoft.Maps.Infobox(center, {
htmlContent: infoboxTemplate.replace('{title}', 'myTitle').replace('{description}', 'myDescription'),
offset: new Microsoft.Maps.Point(-64, 16)
});
В Linux (или любой Unix-y ОС), можно отметить базовый дескриптор файла, используемый popen (), чтобы не заблокироваться.
#include <fcntl.h>
FILE *proc = popen("tail -f /tmp/test.txt", "r");
int fd = fileno(proc);
int flags;
flags = fcntl(fd, F_GETFL, 0);
flags |= O_NONBLOCK;
fcntl(fd, F_SETFL, flags);
Если не будет никакого доступного входа, то fgets возвратит ПУСТОЙ УКАЗАТЕЛЬ с набором errno к EWOULDBLOCK.
fgets()
чтение блокирования, оно, как предполагается, ожидает, пока данные не доступны, при отсутствии данных.
Вы захотите выполнить асинхронное использование ввода-вывода select()
, poll()
, или epoll()
. И затем выполните чтение от дескриптора файла, когда будут доступные данные.
Эти функции используют дескриптор файла FILE*
дескриптор, полученный: int fd = fileno(f);
Можно вместо этого попытаться читать sometextfile использование функций IO низкого уровня (открытый (), читайте (), и т.д.), как сам хвост делает. Когда нет ничего больше для чтения, считайте () нуль возвратов, но все еще попытается читать больше в следующий раз, в отличие от ФАЙЛА* функции.
я решил свои проблемы при помощи потоков, конкретно _beginthread
, _beginthreadex
.
Я Вы использовали бы функции POSIX для IO вместо тех из библиотеки C, Вы могли использовать выбор или опрос.