Функция printf
будет записывать в stdout
. Не соответствует оптимизации для /dev/null
. Следовательно, у вас будут дополнительные затраты на анализ строки формата и оценку любых необходимых аргументов, и у вас будет хотя бы один системный вызов, плюс вы скопируете буфер в адресное пространство ядра (что, по сравнению со стоимостью системного вызова, пренебрежимо мало). .
Этот ответ основан на специальной документации POSIX.
Системные интерфейсы
dprintf, fprintf, printf, snprintf, sprintf - вывод в формате печатиФункция fprintf () помещает выходные данные в именованные выходной поток. Функция printf () помещает вывод в стандартный поток вывода stdout. Функция sprintf () помещает вывод, за которым следует нулевой байт '\ 0', в последовательные байты, начинающиеся с * s; это ответственность пользователя, чтобы гарантировать, что достаточно места доступно.
Базовые определения
blockquote>
должны
Для реализации, которая соответствует POSIX.1-2017, описывает функцию или поведение, которые являются обязательными. Приложение может полагаться на существование функции или поведения.
JavaScript является однопоточным, что означает, когда Вы вызываете функцию, он блокируется, пока он не возвращается. Когда Вы называете предупреждение (), который передает управление к браузеру, который решает, как обработать его. Это не JavaScript, который выталкивает диалоговое окно UI, это - браузер. предупреждение () не возвращается, пока браузер не получает событие "OK" и возвращает управление. Поток JavaScript останавливается, пока этого не происходит.
Таким образом по крайней мере по двум различным причинам, указанным в вышеупомянутом абзаце, ответ нет :)
Что происходит, если Вы переопределяете предупреждение с не в Вашем коде?
например.
<script>
// uncomment next line to swallow alerts
// function alert(nope) { return; }
<script>
<script>
$(document).ready(function() { alert("Hello, world!"); });
</script>
С прокомментированной строкой появляется предупреждение. Со строкой, прокомментированной в, не появляется предупреждение.
У Вас не должно быть проблемы, если Вы знаете текст предупреждения и не возражаете пачкаться.
Можно переопределить предупреждение iframe окна с собственным и сделать что-то к эффекту..
document.getElementById("InnerFrameName").contentWindow.alert = function(){
if (arguments[0].toLowerCase() == "innerframe alert text")
return; //supress
else
alert(arguments[0]);
};
Править: Я сделал немного теста с обработчиком прокси (это находится в asp.net/c#, но необходимо получить идею)...
Внешняя страница в моем тесте является w3 страницей с кнопкой, которая отображает предупреждение, предупреждение теперь передается через определяемую пользователем функцию.
Я уверен, что это намного более грязно затем, требуется добраться.
Страница:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Hello From MyPage</title>
<script type="text/javascript">
function frameLoaded() {
document.getElementById("InnerFrameName").contentWindow.alert = function() {
if (arguments[0].toLowerCase() == "i am an alert box!!") {
alert("MESSAGES WOULD BE SUPRESSED: " + arguments[0]);
return; //supress
} else {
alert(arguments[0]);
}
};
}
</script>
</head>
<body onload="alert('Hello from an unsupressed top level frame message!');">
<form id="form1" runat="server">
<div>
<h1>Internal Page (Top Level)</h1>
<hr />
<iframe id="InnerFrameName" onload="frameLoaded();" src="PageProxy.ashx?externalURI=http://www.w3schools.com/JS/tryit_view.asp?filename=tryjs_alert"
style="width: 800px; height: 600px;">Derp!...</iframe>
</div>
</form>
</body>
</html>
Обработчик прокси:
<%@ WebHandler Language="C#" Class="PageProxy" %>
using System;
using System.Web;
public class PageProxy : IHttpHandler {
public void ProcessRequest (HttpContext context) {
byte[] externalPage = new System.Net.WebClient().DownloadData(context.Request["externalURI"]);
context.Response.OutputStream.Write(externalPage, 0, externalPage.Length);
context.Response.End();
}
public bool IsReusable {
get {
return false;
}
}
}
Лучший выбор решить Ваши проблемы с раздражающим JavaScript состоял бы в том, чтобы переопределить его с клиентским инструментом сценариев как Механик.
Я высоко сомневаюсь относительно этого. Если отдельным доменом, Вы имеете в виду тот, который Вы не имеете никакого контроля?
Если Вы действительно имеете контроль, Вы могли бы изменить предупреждения на модальные поля Javascript, которыми Вы могли управлять.