JavaScript涉及冗长的网址和特殊字符

时间:2010-07-01 00:56:40

标签: javascript

我正在使用以下代码,但我注意到当我更改仪表板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是XML URL吗?
  • 别的什么?

任何帮助都会受到赞赏,因为只处理数组中的第一个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>

2 个答案:

答案 0 :(得分:0)

我不确定这是否能解决您的问题,但我认为frames["displayArea"]无效。 frames是一个数组而不是一个对象,所以你需要使用像frames[0]这样的编号索引。如果您想按名称访问框架,可以使用window.displayAreawindow["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"