Как перестать якобы невидимый JavaScript занимать место? - PullRequest
1 голос
/ 23 июля 2011

Я не очень хорош в программировании, но я провел небольшое исследование и обнаружил, что эта небольшая строка javascript, которая позволяет met, мгновенно воспроизводить звук на странице при нажатии каждой кнопки, связанной с javascript:

<embed src=reset.wav autostart=false width=0 height=0 id=sound7 enablejavascript=true>

Проблема в том, что, поскольку я вставил несколько из этих строк, чтобы определить различные звуки, они начинают занимать место на странице. Я переместил их все в самый конец кода сразу после завершения div, заканчивающего все основное содержимое, и непосредственно перед закрытием тела (см. Ниже). Таким образом, они не портят расположение элементов, но по-прежнему вызывают пустое пространство под всем остальным, что разочаровывает, поскольку из-за этого полоса прокрутки появляется излишне.

</div>
<embed src=reset.wav autostart=false width=0 height=0 id=sound7 enablejavascript=true>
<embed src=reset2.wav autostart=false width=0 height=0 id=sound8 enablejavascript=true>
</body>
</html>

Я видел несколько ответов о том, как не использовать visibility = hidden и использовать display = none, но я не уверен, как применить их к этой строке кода, так как я новичок в этом. Будем весьма благодарны за примеры того, какие части этой строки мне нужно изменить или куда добавить другие части кода.

------------------ UPDATE ---------------------------- -------

По какой-то причине Microsoft Word (да, я признаю, именно это я и использую) не позволил мне вставить какие-либо стили или элементы деления вокруг этих встраиваний, чтобы применить 'display: none'. Возможно, я просто недостаточно знаю, что я делаю, но даже когда я успешно применил «display: none» к каждому встраиванию, используя следующий код, звуки перестали воспроизводиться, даже если пустое пространство было эффективно удалено:

<embed style='display:none' src=reset.wav ....>

Тогда я понял другое решение. У меня есть много элементов на этой странице, и я подумал, что если невидимые записи звукового кода займут место, они могут просто перекрывать элементы, чтобы ничего не сдвигалось и не добавлялось, и, поскольку они не имеют визуального аспекта, они ничего не покрывали , Я исследовал, как работает перекрытие, и применил это, и оно РАБОТАЕТ!

<embed style='position:absolute;z-index:1' src=reset.wav autostart=true
width=0 height=0 id=sound1 enablejavascript=true>

Ответы [ 2 ]

0 голосов
/ 23 июля 2011

Если вы говорите о физическом экранном пространстве на своей странице, то вы можете просто поместить их в div и заставить его быть действительно маленьким:

<div id="sounds" style="display: none;">
<embed src=reset.wav autostart=false width=0 height=0 id=sound7 enablejavascript=true>
<embed src=reset2.wav autostart=false width=0 height=0 id=sound8 enablejavascript=true>
</div>

Если по какой-то причине это не работает (некоторые вещи, такие как Adobe Flash, не загружается, если он скрыт), то вы можете попытаться сделать каждую из них такой маленькой:

<div id="sounds">
<embed style="height: 1px" src=reset.wav autostart=false width=0 height=0 id=sound7 enablejavascript=true>
<embed style="height: 1px" src=reset2.wav autostart=false width=0 height=0 id=sound8 enablejavascript=true>
</div>
0 голосов
/ 23 июля 2011

Чтобы было ясно, вы разместили HTML, а не JavaScript. Это не лучший способ управления звуками на странице, но, если вы хотите сохранить этот метод:

Если они отображаются или вызывают проблемы с компоновкой, самое простое, что нужно сделать, - обернуть их в элемент div, равный display:none.

<div style="display:none;">
    <embed...>
    <embed...>
    <embed...>
</div>

«Чистым» подходом было бы добавить общий класс ко всем этим встраиваниям, а затем установить для них общее правило CSS:

<embed class="mysounds" ... >

<style>
     embed.mysounds { display:none; }
</style>
...