【问题标题】:client side javascript that always return the url to the nsf始终将 url 返回到 nsf 的客户端 javascript
【发布时间】:2012-10-31 02:36:08
【问题描述】:

我需要一个客户端 javascript 函数,该函数始终返回可在 XPages 中使用的 .nsf 的路径。例如http://acme.com/folder1/folder2/mydb.nsf/whatever/whatever

如果我能用这样的功能就好了

function getNSFPath(){

}

如何构造这样的函数?

【问题讨论】:

  • “val.nsf”通常放在什么位置?
  • 我知道您有需要,但您有什么问题?
  • nsf 是一个类似“home.nsf”的文件名,它总是在像这样acme.com/home.nsf/whatever 的根目录或文件夹acme.com/folder1/home.nsf/whatever
  • 我有点看到那些反对票的到来,但我实际上做了谷歌,希望帮助构建一个非常好的函数。
  • 投反对票是因为没有花时间和精力写下我们可以回答的问题。即使在您编辑之后,我也不清楚该函数的结果应该是什么。如果你说“当前页面是'bla.com/dir/app.nsf/XPage.xsp'并且我希望函数返回'xyz'”这样的话会很有帮助。

标签: javascript path xpages


【解决方案1】:

XPages 目前没有 nsf 之外的目录结构。因此,像这样查找 / 的最后一次出现就足够了:

function getNSFPath(url) {
    return url.substring(0, url.lastIndexOf('/'));
}

在未来的版本中可能会发生变化,因此您希望改为查找“.nsf”。但是,这也不是一种保存方式,因为目录可以包含“.nsf”。此外,管理员可以决定使用 URL 重定向来掩盖 NSF,因此您最好考虑一个不依赖此类功能的架构

【讨论】:

  • 不鼓励仅使用代码的答案,网站会自动标记它们以供审核。请写出代码的作用以及它如何解决特定问题。
  • 我认为这个效果更好 function getNSFPath(url) { return url.substring(0, url.lastIndexOf('.nsf'))+ ".nsf"; }
  • @Tom 我同意,但考虑到问题的简单性,答案真的很不言自明。解释我的答案只是重复问题。
  • 谢谢 Gwyn,你看到了我的问题并帮助我朝着正确的方向前进
  • 这个函数会因为很多 url 而失败,f.e. example.com/db.nsf/test.xsp?databaseName=test/test.nsf.
【解决方案2】:

我会使用这样的东西来获得 .nsf 的第一次出现,并覆盖是否有人写过 .NSF 我已经看到发生了 ;-)

函数 getNSFPath(url){ 返回 url.toLowerCase().split(".nsf")[0]+ ".nsf"; }

【讨论】:

  • 只剩下一个问题:如果通过replica id打开db怎么办? ;-)
【解决方案3】:

这是一个适用于 nsf 和副本 ID 路径的 sn-p。由于使用了 document.location.pathname,因此您不必担心参数,因为它们不包含在内。

function getCurrentAppPath(){
    // Extract path with replica id or nsf path
    return document.location.pathname.replace( /^(\/([0-9a-f]{16})|(.+\.nsf)).*/i, '$1/' );
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-24
    • 1970-01-01
    • 1970-01-01
    • 2012-12-12
    • 2010-09-22
    • 1970-01-01
    • 1970-01-01
    • 2020-11-22
    相关资源
    最近更新 更多