2015-09-04 41 views
3

我安装我下我的Apache /本地主机/ ci_app子目录CI/JS动态链接指向根/在CI

现在我下/本地主机/ ci_app一些JS文件/资产/ JS/code.js

里面code.js我加载脚本动态

(function(d, s, id){ 
    var js, fjs = d.getElementsByTagName(s)[0]; 
    if (d.getElementById(id)) {return;} 
    js = d.createElement(s); js.id = id; 
    js.src = "/assets/js/another_script.js"; 
    fjs.parentNode.insertBefore(js, fjs); 
}(document, 'script', 'my_other_script')); 

在CI配置我有$config['base_url'] = '/ci_app/';但每次我加载页面我得到的脚本中调用http://localhost/assets/js/another_script.js

我需要的脚本是指向http://localhost/ci_app/assets/js/another_script.js

+0

尝试让base_url在配置中为空,CI在猜测它时非常神。然后,尝试像这样调用脚本:js.src =“<?php echo base_url();?> assets/js/another_script.js”;它应该工作... – sinisake

+0

这不会工作。不执行里面.js – Kal

+0

对不起,没有仔细阅读,认为这是你的看法... – sinisake

回答

0

您可以添加<base href="<?php echo base_url(); ?>">页面的<head>内。这解决了所有相对路径到您的$config['base_url']设置。

1

你能做到这一点有两种方式,

你的js脚本可以调用这个函数,它会给你的基本URL你想

(function(d, s, id){ 
    var js, fjs = d.getElementsByTagName(s)[0]; 
    if (d.getElementById(id)) {return;} 
    js = d.createElement(s); js.id = id; 
    js.src = getBaseUrl() + "/assets/js/another_script.js"; 
    fjs.parentNode.insertBefore(js, fjs); 
}(document, 'script', 'my_other_script')); 

function getBaseUrl() { 
    var l = window.location; 
    var base_url = l.protocol + "//" + l.host + "/" + l.pathname.split('/')[1]; 
    return base_url; 
} 

,你可以改变你的BASE_URL在配置这样的

$config['base_url'] = 'http://localhost/ci_app/'; 

它可以工作。