我正在使用以下代码,但我注意到当我更改仪表板URL数组以包含包含“#”,“ - ”和“=”等字符的冗长XML URL时,我在数组,只处理第一个URL,忽略其他两个。
例如,网址可能如下:
dashboards: [
{url:"http://www.abc-drf-qaz.mydomain.details/folder1/folder2/job#f=Qwerty/fff/FFF.xml",time:5},
{url:"http://www.abc-drf-qaz.mydomain.details/folder1/folder2/job#f=Qwerty/ggg/GGG.xml",time:5},
{url:"http://www.abc-drf-qaz.mydomain.details/folder1/folder2/job#f=Qwerty/hhh/HHH.xml",time:5} ],
人们可以建议可能发生的事情,例如:
任何帮助都会受到赞赏,因为只处理数组中的第一个URL而忽略所有其他URL。
<html lang="en">
<head>
<title>Dashboard Example</title>
<style type="text/css">
body, html { margin: 0; padding: 0; width: 100%; height: 100%; overflow: hidden; }
iframe { border: none; }
</style>
<script type="text/javascript">
var Dash = {
nextIndex: 0,
dashboards:
[{
url: "http://www.abc-drf-qaz.mydomain.details/folder1/folder2/job#f=Qwerty/fff/FFF.xml",
time: 5
},
{
url: "http://www.abc-drf-qaz.mydomain.details/folder1/folder2/job#f=Qwerty/ggg/GGG.xml",
time: 5
},
{
url: "http://www.abc-drf-qaz.mydomain.details/folder1/folder2/job#f=Qwerty/hhh/HHH.xml",
time: 5
}],
display: function()
{
var dashboard = Dash.dashboards[Dash.nextIndex];
frames["displayArea"].location.href = dashboard.url;
Dash.nextIndex = (Dash.nextIndex + 1) % Dash.dashboards.length;
setTimeout(Dash.display, dashboard.time * 1000);
}
};
window.onload = Dash.display;
</script>
</head>
<body>
<iframe name="displayArea" width="100%" height="100%"></iframe>
</body>
</html>
答案 0 :(得分:0)
我不确定这是否能解决您的问题,但我认为frames["displayArea"]
无效。 frames是一个数组而不是一个对象,所以你需要使用像frames[0]
这样的编号索引。如果您想按名称访问框架,可以使用window.displayArea
或window["displayArea"]
请参阅此JSFiddle:http://jsfiddle.net/bAJhj/
答案 1 :(得分:0)
关于网址,您可以转义它们以确保正确格式化任何特殊字符。使用escape()
功能。
escape("http://www.abc-drf-qaz.mydomain.details/folder1/folder2/job#f=Qwerty/fff/FFF.xml");
// result is "http%3A//www.abc-drf-qaz.mydomain.details/folder1/folder2/job%23f%3DQwerty/fff/FFF.xml"