通过Javascript

时间:2015-08-18 11:18:02

标签: javascript jquery url get

我需要在Javascript(而不是当前网址)中找到请求的网址,以确定加载了两个显示网站中的哪一个。

场景:我目前正在为Icinga Web 2构建一个模块,它可以选择显示两个框架(两个单独的.phtml文件)并排。当其中两个框架打开时,浏览器中显示的URL如下所示:

http://host/icingaweb/mymodule/siteA#!/icingaweb/mymodule/siteB

您可以单击其上的按钮单独重新加载单个帧。在浏览器日志(和apache日志)中,您可以看到,对于每个加载,只需要特定页面:

// reloading siteA
GET http://host/icingaweb/mymodule/siteA
// reloading siteB
GET http://host/icingaweb/mymodule/siteB

我在Javascript中至少需要这个单一的请求(至少是请求的网站)。

不幸的是,以下功能不起作用:

var pathname = window.location.pathname;
// returns (no matter which site is reloaded): "/icingaweb/mymodule/siteA"
var url      = window.location.href;
// returns (no matter which site is reloaded): "http://host/icingaweb/mymodule/siteA#!/icingaweb/mymodule/siteB"

Icinga Web 2将所有javascript内容解析为单个文件,该文件随后可全局访问(icinga.min.js)。自定义javascript必须放在module.js。

module.js

(function(Icinga) {
    var mymodule = function(module) {
       /**
        * The Icinga.Module instance (public/js/Icinga/module.js)
        */
       this.module = module;
       this.initialize();
       this.module.icinga.logger.info('mymodule module loaded');
    };

    mymodule.prototype = {
        initialize: function()
        {
            /**
             * Tell Icinga about our event handlers, these are then
             * automatically detached once Icinga is unloading
             */
            this.module.on('rendered', this.showURLs);
        },

        showURLs: function(event)
        {
            var pathname = window.location.pathname;
            // returns (no matter which site is reloaded): "/icingaweb/module/siteA"
            var url      = window.location.href;
            // returns (no matter which site is reloaded): "http://host/icingaweb/module/siteA#!/icingaweb/module/siteB"
        }
    };

    /**
     * Register this module so that Icinga knows about it
     *
     * It's important that the identifier used is the same
     * as the name of the module itself (case sensitive)
     */
    Icinga.availableModules.mymodule = mymodule;
}(Icinga));

1 个答案:

答案 0 :(得分:0)

对于那些对解决方案感兴趣的人,JoNe和Icinga Web 2开发人员在monitoring-portal.org回答了我的问题

您可以使用以下内容获取当前加载的框架/页面的URL:

$(event.target).closest('.container').data('icingaUrl')

非常感谢JoNe。