2010-10-29 19 views
0

в файле PHP:Javascripts работает для хрома, в IE не работает

<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, в чем проблема?

+0

любой другой способ, который может записывать щелчки без использования redirect.php (заголовок :) – nzh

ответ

0

Если вы не хотите использовать перенаправления, подождите, пока браузер выполнит запрос 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

благодарит много, что работает – nzh

3

should'nt это будет

onclick="out('IDinmysql')" 

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

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

Также было бы хорошо, чтобы IMG частные

var img = new Image(); 
+0

Он по-прежнему оленья кожа работа в IE – nzh

0

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

+0

Прошу прощения, я набрал здесь неправильный адрес. Отредактировано – nzh

1

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

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

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

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

+0

Я также заметил, что Google отслеживает клики пользователей (не все клики, главным образом, когда вы идентифицированы со своей учетной записью Google) таким образом (сначала промежуточная страница Google вызывается, тогда происходит перенаправление), поэтому, вероятно, это путь. – Mart

0

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

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

+0

'javascript: void (alert (typeof click));' -> undefined. –

+0

Попробуйте в Internet Explorer внутри ссылки или любого другого элемента, указанного в ссылке MSDN: 'click me': вы увидите, что это объект. Если вы попробуете его в adressbar, это не сработает, поскольку клик не является методом окна, это метод некоторых элементов. –

+0

Ваше право. Я всегда думал, что это должно быть вызвано этим.click() ' –