2015-08-19 3 views
0

Я внедрил HTML-страницу, которая выполняется локально на машине Linux (с использованием самых последних версий firefox). Он используется для встраивания плагина, который я запрограммировал.Изменение встроенного атрибута src динамически с помощью диалогового окна файла

В данный момент, я статический пройти путь к файлу, плагин должен загрузить, который жестко закодировано в HTML файл:

<embed id="embed1" type="application/x-bbx" src="/tmp/testfile.bbx"></embed> 

HTML-страница генерируется для всех .bbx файлов. В настоящее время я пытаюсь выяснить, как я могу избежать жестко закодированного пути, добавив элемент <input type="file">. Цель состоит в том, чтобы динамически изменять загруженный файл (указанный src), чтобы избежать необходимости генерации HTML-страницы для всех файлов .bbx.

Поскольку браузеры не разрешают доступ к пути к файлу: как я могу изменить источник embed в соответствии с загруженным файлом?

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

EDIT 1: Плагин является сценарием, то есть я могу вызывать функции и передавать параметры плагину с использованием JavaScript. Таким образом, было бы достаточно получить весь путь к файлу и передать его плагину, который, в свою очередь, сделает остальное внутренне.

EDIT 2: Для уточнения: я хочу, чтобы избежать бремени необходимости пользователя вводить путь к файлу вручную, поэтому я намеревался использовать <input type="file">

+0

Итак, вы хотите использовать javascript? – Gacci

+0

Да, знаю. Но ничего более, т.е. я не хочу (или технически не могу) использовать языки, отличные от JS и HTML – Paddre

ответ

0

Если я понял правильно, это должно сделать это!

<script> 
var embed1 = document.getElementById('embed1'); 
embed1.src = 'your path'; 
</script> 
+0

Это не помогает, потому что я до сих пор не получаю путь к файлу, указанный пользователем (если он не вводит его вручную, чего я хочу избежать) – Paddre

0

Вот полный пример:

JSFiddle

<input type="text" id="path" name="path" /> 
<input type="submit" id="submit" value="Change it" onclick="changePath()"> 
<embed id="embed1" type="application/x-bbx" src="/tmp/testfile.bbx"></embed> 

<script> 
function changePath() { 
    var e = document.getElementById('path'); 
    var val = e.value; 
    var embed1 = document.getElementById('embed1'); 
    embed1.src = val; 
} 
</script> 
+0

Я бы хотел, чтобы пользователь не вводил путь к файлу вручную. Вот почему я подумал об использовании тега ''. – Paddre

2
var Target = "/tmp/testfile2.bbx"; 
var Source = document.getElementById('embed1'); 
var Clone = Source.cloneNode(true); 
Clone.setAttribute('src',Target); 
Source.parentNode.replaceChild(Clone,Source); 

Но история браузера не получает событие здесь ... так .Задняя() будет работать некорректно. Вот как я сегодня здесь. Надеюсь это поможет. И извините, если бы не флюс в нужный момент. ;-)

Смежные вопросы