Вторая форма.submit () не работает в Safari на XP, работает в других браузерах - PullRequest
5 голосов
/ 18 мая 2011

У меня есть некоторый код, который использует form.submit (), чтобы открыть другое окно, когда вы нажимаете что-то на моей странице. Он отлично работает в IE 6-8, Firefox и Chrome, а также Safari на Mac. Но в Safari в Windows XP после того, как вы что-то нажмете, ни одна из других ссылок, которые выполняют form.submit (), не работает. Даже то же самое что-то не делает этого. Вот некоторый код обратного вызова для этой кнопки:

accessEmployeeViewClicked = function() {
    var form=document.Form<xsl:value-of select="//PAGE/@NAME" />;

    form.action = 'ServletName';
    form.target = "otherTarget";
    form.submit();
};

Функция доступна по следующему коду:

<a href="#" onclick="accessEmployeeViewClicked();return false;">Access employee's view &gt;&gt;</a>

Я установил точку останова во встроенном отладчике Safari, и во второй раз, когда вы щелкаете по нему, он определенно попадает в функцию accessEmployeeViewClicked(), но form.submit(); ничего не делает. Согласно предложению в комментариях, я изменил form.target на "_blank", но это не имело никакого эффекта.

Я посмотрел на подобные вопросы:

и попробовал предложения, и они не помогли.

Ответы [ 2 ]

2 голосов
/ 18 мая 2011

Похоже, Apple должна знать о проблеме, так как она была зарегистрирована в 2009 году и предположительно вошла в их систему отслеживания ошибок "радар", но им должно быть все равно: https://bugs.webkit.org/show_bug.cgi?id=28633

Я реализовал обходной путь из этого сообщения об ошибке, и он сработал:

        form.action = 'ServletName';
        // Work around for Safari bug suggested in https://bugs.webkit.org/show_bug.cgi?id=28633
        if ($.browser.safari)
        {
            form.action += '?t=' + new Date().getTime();
        }
        form.target = "otherTarget";
        form.submit();
0 голосов
/ 19 мая 2011

Вот более простое решение - оно будет работать во всех браузерах и даст вам дополнительное значение метки времени в вашем файле журнала

<form onsubmit="this.ts.value=new Date().getTime()">
.
.
.
<input type="hidden" name="ts" value="timestamp" />
</form>

Если у вас есть функция, выполняющая отправку, отправка не запускаетсяпоэтому вместо этого добавьте

form.target = "otherTarget";
form.ts.value=new Date().getTime()
form.submit();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...