使用文件对话框动态更改embed src属性

时间:2015-08-19 07:34:45

标签: javascript html embed

我实现了一个在Linux机器上本地运行的HTML页面(使用最新的firefox版本)。它用于嵌入我编程的插件。

目前,我静态传递文件路径,插件必须加载,在HTML文件中进行硬编码:

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

为所有.bbx个文件生成HTML页面。我目前正在尝试通过添加<input type="file">元素来弄清楚如何避免硬编码路径。目的是动态更改加载的文件(由src指定),以避免为所有.bbx文件生成HTML页面。

由于浏览器不允许访问文件路径:如何根据加载的文件更改embed的来源?

由于一些技术原因,我想避免使用JQuery。另请注意,该页面仅由特定用户在本地运行。

编辑1:该插件是可编写脚本的,即我可以调用函数并使用JavaScript将参数传递给插件。因此,获取整个文件路径并将其传递给插件就足够了,而插件又在内部完成其余工作。

编辑2:为了澄清:我想避免让用户手动输入文件路径的负担,这就是为什么我打算使用<input type="file">

3 个答案:

答案 0 :(得分: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);

但浏览器的历史记录在这里没有事件......所以.back()将无法正常工作。 多数民众赞成我今天如何来到这里。希望这可以帮助。对不起,如果一个人没有融入正确的时刻。 ; - )

答案 1 :(得分:0)

如果我理解正确的话,应该这样做!

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

答案 2 :(得分: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>