Функция JavaScript в href vs. onclick

Я понимаю, что Javascript использует UTF-8 для своих строк

blockquote>

Нет, нет.

Каждая страница имеет свою кодировку, определенную в мета тег, чуть ниже элемента заголовка



или



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

И это хорошая идея, чтобы определить его целевую кодировку кодировки на стороне сервера.

Java
<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>

PHP
header("Content-Type: text/html; charset=UTF-8");

C#
I do not know how to...

И это может быть хорошей идеей настройте каждый файл сценария, использует ли он чувствительные символы (á, é, í, ó, ú и т. д.).


...

Итак, это моя теория, что если я перекодирую строку в ISO-8859-1 перед ее отправкой, она должна решить мою проблему

blockquote>

Нет, нет.

целевой сервер может обрабатывать строки, отличные от ISO-8859-1. Например, Tomcat обрабатывает ISO-8859-1, независимо от того, как вы настроили свою страницу. Итак, на стороне сервера вам может потребоваться настроить ваш запрос в соответствии с настройкой вашей страницы.

Java
request.setCharacterEncoding("UTF-8")

PHP
// I do not know how to...

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

InternetExplorer
    formElement.encoding = "application/x-www-form-urlencoded; charset=ISO-8859-1";
ELSE
    formElement.enctype  = "application/x-www-form-urlencoded; charset=ISO-8859-1";

Или вы должны предоставить функцию, которая получает числовое представление в Unicode Character Set, используемое каждым символом. Он будет работать независимо от кодировки целевой кодировки. Например, в качестве набора символов Юникода является \ u00E1;

alert("á without its Unicode Character Set numerical representation");
function convertToUnicodeCharacterSet(value) {
    if(value == "á")
        return "\u00E1";
}
alert("á Numerical representation in Unicode Character Set is: " + convertToUnicodeCharacterSet("á"));

Здесь вы можете видеть в действии:

Вы можете использовать этот link в качестве ориентира (см. JavaScript escapes)

Добавлен оригинальный ответ, как я реализую jQuery funcionality

var dataArray = $(formElement).serializeArray();
var queryString = "";
for(var i = 0; i < dataArray.length; i++) {
    queryString += "&" + dataArray[i]["name"] + "+" + encodeURIComponent(dataArray[i]["value"]);
}
$.ajax({
    url:"url.htm",
    data:dataString,
    contentType:"application/x-www-form-urlencoded; charset=UTF-8",
    success:function(response) {
        // proccess response
    });
});

Он отлично работает без какой-либо головной боли.

Привет,

433
задан Anik Islam Abhi 17 December 2015 в 02:30
поделиться

6 ответов

Помещение onclick в href оскорбило бы тех, кто твердо верит в отделение контента от поведения / действия. Аргумент состоит в том, что ваш html-контент должен оставаться сфокусированным исключительно на контенте, а не на представлении или поведении.

Типичный путь в наши дни - использовать библиотеку javascript (например, jquery) и создать обработчик событий, используя эту библиотеку. Это будет выглядеть примерно так:

$('a').click( function(e) {e.preventDefault(); /*your_code_here;*/ return false; } );
260
ответ дан 22 November 2019 в 23:07
поделиться

Лично меня раздражает размещение вызовов javascript в теге HREF. Обычно я не обращаю внимания на то, является ли что-то ссылкой на javascript или нет, и часто я хочу открыть что-то в новом окне. Когда я пытаюсь сделать это с помощью одного из этих типов ссылок, Я получаю пустую страницу, на которой ничего нет, а в адресной строке находится javascript. Однако это немного обходит стороной, используя onlick.

4
ответ дан 22 November 2019 в 23:07
поделиться

лучший способ сделать это:

<a href="#" onclick="someFunction(e)"></a>

Проблема в том, что это БУДЕТ добавлять хэш (#) в конец URL-адреса страницы в браузере, что требует от пользователя дважды щелкнуть кнопку «Назад», чтобы перейти на страницу, предшествующую вашей. . Учитывая это, вам нужно добавить код, чтобы остановить распространение события. В большинстве наборов инструментов javascript уже есть функция для этого. Например, инструментарий dojo для этого использует

dojo.stopEvent(event);

.

10
ответ дан 22 November 2019 в 23:07
поделиться

В дополнение ко всему здесь, href отображается в строке состояния браузера, а onclick - нет. Я думаю, что показывать там код javascript неудобно.

11
ответ дан 22 November 2019 в 23:07
поделиться

Что касается полных фреймворков, я считаю, что Django относительно невелик.

Если вы действительно хотите облегчить, попробуйте web.py ], CherryPy , Pylons и web2py .

Я думаю, что фаворитом публики из вышеупомянутого является Pylons, но я человек Django, поэтому я могу » Больше ничего не могу сказать.

Чтобы узнать больше об облегченных фреймворках Python, ознакомьтесь с этим вопросом .

при указании действия с помощью навигации через href браузер обычно поддерживает открытие этого href в отдельном окне с помощью ярлыка или контекстного меню. Это невозможно при указании действия только с помощью onclick .


Однако, если вы спрашиваете, как лучше всего получить динамическое действие от щелчка по объекту DOM, а затем присоедините событие с помощью javascript отдельно от содержимого документа - лучший способ. Вы можете сделать это несколькими способами. Распространенным способом является использование библиотеки javascript, такой как jQuery, для привязки события:

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<a id="link" href="http://example.com/action">link text</a>
<script type="text/javascript">
    $('a#link').click(function(){ /* ... action ... */ })
</script>
66
ответ дан 22 November 2019 в 23:07
поделиться

Наличие javascript: в любом атрибуте, не предназначенном специально для сценариев, является устаревшим методом HTML. Хотя технически это работает, вы все равно назначаете свойства javascript атрибуту, не являющемуся скриптом, что не является хорошей практикой. Он может даже выйти из строя в старых браузерах или даже в некоторых современных (похоже, сообщение на форуме в Google указывает на то, что Opera не любит URL-адреса 'javascript:').

Лучшим вариантом будет второй способ - поместить свой javascript в атрибут onclick , который игнорируется, если функциональные возможности сценариев недоступны. Поместите действительный URL-адрес в поле href (обычно "#") для отката для тех, у кого нет javascript.

7
ответ дан 22 November 2019 в 23:07
поделиться
Другие вопросы по тегам:

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