Существует ли способ моделировать щелчок по предупреждению в JavaScript?

Функция printf будет записывать в stdout. Не соответствует оптимизации для /dev/null. Следовательно, у вас будут дополнительные затраты на анализ строки формата и оценку любых необходимых аргументов, и у вас будет хотя бы один системный вызов, плюс вы скопируете буфер в адресное пространство ядра (что, по сравнению со стоимостью системного вызова, пренебрежимо мало). .

Этот ответ основан на специальной документации POSIX.

Системные интерфейсы
dprintf, fprintf, printf, snprintf, sprintf - вывод в формате печати

Функция fprintf () помещает выходные данные в именованные выходной поток. Функция printf () помещает вывод в стандартный поток вывода stdout. Функция sprintf () помещает вывод, за которым следует нулевой байт '\ 0', в последовательные байты, начинающиеся с * s; это ответственность пользователя, чтобы гарантировать, что достаточно места доступно.

Базовые определения
должны
Для реализации, которая соответствует POSIX.1-2017, описывает функцию или поведение, которые являются обязательными. Приложение может полагаться на существование функции или поведения.

8
задан moffdub 19 February 2009 в 03:52
поделиться

6 ответов

JavaScript является однопоточным, что означает, когда Вы вызываете функцию, он блокируется, пока он не возвращается. Когда Вы называете предупреждение (), который передает управление к браузеру, который решает, как обработать его. Это не JavaScript, который выталкивает диалоговое окно UI, это - браузер. предупреждение () не возвращается, пока браузер не получает событие "OK" и возвращает управление. Поток JavaScript останавливается, пока этого не происходит.

Таким образом по крайней мере по двум различным причинам, указанным в вышеупомянутом абзаце, ответ нет :)

19
ответ дан 5 December 2019 в 05:08
поделиться

Я вполне уверен, это не возможно.

9
ответ дан 5 December 2019 в 05:08
поделиться

Что происходит, если Вы переопределяете предупреждение с не в Вашем коде?

например.

<script>
// uncomment next line to swallow alerts
//  function alert(nope) { return; }
<script>
<script>
  $(document).ready(function() { alert("Hello, world!"); });
</script>

С прокомментированной строкой появляется предупреждение. Со строкой, прокомментированной в, не появляется предупреждение.

2
ответ дан 5 December 2019 в 05:08
поделиться

У Вас не должно быть проблемы, если Вы знаете текст предупреждения и не возражаете пачкаться.

Можно переопределить предупреждение 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;
        }
    }
}
3
ответ дан 5 December 2019 в 05:08
поделиться

Лучший выбор решить Ваши проблемы с раздражающим JavaScript состоял бы в том, чтобы переопределить его с клиентским инструментом сценариев как Механик.

0
ответ дан 5 December 2019 в 05:08
поделиться

Я высоко сомневаюсь относительно этого. Если отдельным доменом, Вы имеете в виду тот, который Вы не имеете никакого контроля?

Если Вы действительно имеете контроль, Вы могли бы изменить предупреждения на модальные поля Javascript, которыми Вы могли управлять.

1
ответ дан 5 December 2019 в 05:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: