Кто-то очень любезно предоставил решение, которое дало именно то, что я пытался сделать.
const selector = "#panels img[src='https://hyperspace.marquiskurt.net/icons/favicon-32x32.png']";
function fixImages() {
const maybeBadImage = document.querySelector(selector);
if(maybeBadImage){
maybeBadImage.src = "chrome://favicon/https://hyperspace.marquiskurt.net/app/";
}
}
const observer = new MutationObserver(fixImages);
function initMod() {
if(!document.querySelector(selector)){
setTimeout(initMod, 0);
return;
}
observer.observe(document.querySelector(selector), { attributes: true });
fixImages();
}
initMod();
Если для setTimeout
задано значение 0, пунктирная src
немедленно исправляется без каких-либо визуальных изменений, которые может видеть пользователь. Этот сценарий может быть изменен для использования, если у кого-то еще возникает проблема, когда веб-браузер Vivaldi неправильно изменяет src
для значка определенной веб-панели, добавленной пользователем.
Доступ к диску предотвратит переход вашего компьютера в спящий режим, согласно статье Apple « Mac OS X: Почему ваш Mac не может спать или оставаться в спящем режиме ».
Кроме того, мое тестирование показало, что приоритет потока также влияет на то, будет ли компьютер спать. Следующий код с таймером позволяет компьютеру перейти в спящий режим.
@implementation AppController
-(void)timerFired:(NSTimer *)aTimer
{
}
-(void)spawnThread
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[NSThread setThreadPriority:0.0];
[NSTimer scheduledTimerWithTimeInterval:20 target:self selector:@selector(timerFired:) userInfo:nil repeats:YES];
while(1) //Run forever!
{
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:300]];
}
[pool drain];
}
-(void)awakeFromNib
{
[NSThread detachNewThreadSelector:@selector(spawnThread) toTarget:self withObject:nil];
}
@end
Удаление вызова setThreadPriority предотвратит переход компьютера в спящий режим.
Вы изучили launchd? http://developer.apple.com/MacOsX/launchd.html
Это - то, что ОС использует для ее собственных сервисов, таким образом, я уверен, что сон был учтен.
Я немного смущен, терплю меня.=)
Действие Вашим приложением сбросит таймер автоматического отключения машины, поэтому если задержка между передачами не будет больше, чем период неактивности, машина не заснет. Я не абсолютно уверен, что классифицирует как "действие" по OS X, но если это будет что-нибудь как Linux, то я ожидаю, что сеть или диск IO рассчитали бы, как будет процессы в состоянии выполнения - то есть произведение подсчетов или перестановка данных вокруг в RAM.
Кроме того, в конечном счете система действительно засыпала, Вы ожидаете, что машина для пробуждения так приложения может говорить с удаленным хостом?