HTML onload - использование переменных в качестве параметров - PullRequest
2 голосов
/ 23 октября 2010

Я хочу использовать что-то вроде:

<body onLoad="init('A sentence with "quoted text" as parameter')">

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

Выход из кавычек тоже не работает

<body onLoad="init('A sentence with \"quoted text\" as parameter')">

(выше тоже не работает).

Как мне с этим справиться. Хотя, возможно, я смогу создать строковую переменную и назначить ей свое предложение (с кавычками). Но я не знаю, как это сделать! Загружаемое тело - HTML, а переменные Javascript будут видны только в рамках скрипта, верно? Если быть точным, следующее не работает:

<script language="JavaScript">
var dada='A sentence with \"quoted text\" as parameter';
</script>
<body onLoad="init($dada, '</a>')">

Ответы [ 4 ]

9 голосов
/ 23 октября 2010

Вы должны использовать HTML-сущности, чтобы заставить его работать:

<body onLoad="init('A sentence with &quot;quoted text&quot; as parameter')">

тем не менее, гораздо более понятным способом было бы присвоить значение в отдельной части <SCRIPT> в заголовке документа.

...
<script>
body.onload = function() { init('A sentence with "quoted text" as parameter'); }
</script>
<body>
...

Событие onload имеет общий недостаток: оно запускается только тогда, когда документ и все его активы (изображения, таблицы стилей ...) загружены. Вот где наступает событие onDOMLoad: оно срабатывает, когда основная структура HTML готова, и все элементы отображаются. Тем не менее, он не поддерживается единообразно в разных браузерах, поэтому все фреймворки имеют свою собственную реализацию.

Версия jQuery называется .ready().

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

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

<script type="text/javascript">
var data = "some data";
document.body.onload = function()
{
    alert(data);
}
</script>
2 голосов
/ 23 октября 2010

не самый хороший способ

onload='init("A sentence with \"quoted text\" as parameter")'
0 голосов
/ 23 октября 2010

Кстати, я совершил глупую ошибку.

<script language="JavaScript"> 
var dada='A sentence with \"quoted text\" as parameter'; </script> 
<body onLoad="init(dada, '</a>')"> 

Это тоже работает.Я использовал $ dada вместо dada в вызове onload.

...