Javascripts работает для Chrome, в IE он не работает - PullRequest
0 голосов
/ 29 октября 2010

в php-файле:

<script type="text/javascript">
 function click(input){
  img = new Image();
  img.src = '/click.php?id=' +input;
 }
</script>

<a href="http://www.out.com"  target="_blank" onclick="click('IDinmysql')" >outlink</a>

click.php обновляет mysql после того, как я нажму на эту ссылку

это работает для хрома, но не для IE, в чем проблема?

Ответы [ 5 ]

3 голосов
/ 29 октября 2010

Должно ли это быть

onclick="out('IDinmysql')"

Кроме того, вы должны добавить временную метку, чтобы предотвратить кэширование IE.

img.src = '/click.php?t='+new Date().getTime()+'&id=' +input;

Также было бы неплохо сделать img частным

var img = new Image();
1 голос
/ 29 октября 2010

Даже с учетом предложенных исправлений ваш код может иногда работать, а иногда и не работать, поскольку два действия выполняются одновременно.

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

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

Вы можете решить эту проблему, изменив href вашей ссылки так, чтобы она вызывала /click.php?id=IDinmysql&redirect=http://www.out.com (UrlEncode это правильно).Затем ваш PHP-скрипт записывает щелчок, а затем выполняет перенаправление.

0 голосов
/ 30 октября 2010

Если вы не хотите использовать перенаправления, подождите, пока браузер завершит запрос на click.php, а затем перейдите на внешний адрес.Приведенный ниже код может потребовать, чтобы некоторые настройки были кросс-браузерными, я помню, что в некоторых браузерах возникают проблемы с методом .click() или onreadystatechange().

<script type="text/javascript">
function click(input,aObj){
    img = new Image();
    img.onreadystatechange = function(){
        aObj.onclick = function(){};
        aObj.click();
    };
    img.src = '/click.php?id=' +input;
    return false;
}
</script>

<a href="http://www.out.com" target="_blank" onclick="return click('IDinmysql',this)">outlink</a>

Вторая идея - открыть click.php во всплывающемс размерами 1x1, и вернуть его <body onload="window.close()"></body>

0 голосов
/ 30 октября 2010

Реальная проблема (конечно, другие вещи также должны быть исправлены):

Измените название функции. Существует также собственный javascript-метод, который называется click ,

0 голосов
/ 29 октября 2010

Кажется, здесь не хватает некоторого кода.Как onclick = "click ()" вызывает функцию "out (input)"?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...