如何使用php文件引入外界的js文件

JavaScript015

如何使用php文件引入外界的js文件,第1张

php header('Content-type: text/javascriptcharset=utf-8')header('Expires: ' . date('D, d M Y H:i:s', time() + 86400) . ' GMT')if (!empty($_GET)) { $fileName = array()$subFiles = array()$modelName = $_GET['modelName']if (empty($modelName)) { exit} else { $modelName = trim($modelName)unset($_GET['modelName'])} foreach ($_GET as $from =>$path) { $from = trim($from)$path = trim($path)if (strlen($from) <3) { continue} if (strlen($path) <1) { continue} array_push($fileName, $from . $path)$from = substr($from, 2)$path = str_replace('^', '/', $path)switch ($from) { case Test_Constant::JS_FROM_COM_LIB: $from = './library/'breakcase Test_Constant::JS_FROM_APP_LIB: $from = "./{$modelName}/scripts/library/"breakdefault : $from = "./{$modelName}/scripts/"break} array_push($subFiles, $from . $path . '.js')} $filePath = './' . $modelName . '/scripts/caches/' . md5(implode('', $fileName)) . '.js'if (is_file($filePath)) { readfile($filePath)} else { $data = ''foreach ($subFiles as $file) { $data .= file_get_contents($file) . "/n "} @file_put_contents($filePath, $data)echo $data} } 其中的常量类: class Test_Constant { /** * 来自公用类库的JS文件 */ const JS_FROM_COM_LIB = 1/** * 相对于特定应用来说的JS类库目录 */ const JS_FROM_APP_LIB = 3/** * 相对于特定应用来说的JS通用目录 */ const JS_FROM_APP_COM = 5} 那么如何调用呢? <script type="text/javascript" src="/library/common/My97DatePicker/WdatePicker.js"></script><script type="text/javascript" src="/js.php?

SUB是和IDX文件一同使用的,也就是他们加在一起才可以有字幕~~~~~~

然后把他们和视频文件放在一个文件夹里,文件名设置成一致的~~~~~~~~~~~

不用选择,它自动就可以显示出字幕了~~~~~~~~~~~

这是在“给JavaScript文件传递参数”(你可以百度引号中的字符串)

在JavaScript文件里获取并解析script元素的src

我们希望能像下面这样传入参数:

<script type="text/javascript" src="test.js?a=b&c=d"></script>

核心问题是如何获取到src属性。

方法一是给script添加id属性,通过id得到当前script,再用正则从src中取出参数。缺点是HTML 4.01 Specification里,SCRIPT元素没有id属性。这个缺点也算不得是缺点,毕竟尽信标准不如无标准。

方法二是用js的文件名当作钩子,js代码里通过document.getElementsByTagName('script')后,正则匹配出当前js文件。这个方法很正统,但要求文件名唯一。缺点是代码多,不精炼,对性能也稍有影响。

方法三是在方法一的基础上,干脆再添加一个自定义属性data:

<script id="testScript" type="text/javascript" src="test.js" data="a=b&c=d"></script>

test.js文件里,通过下面这行得到传入的参数:

var scriptArgs = document.getElementById('testScript').getAttribute('data')

方法四是利用js的顺序执行机制(js文件的加载可以是同步或异步方式,但执行时,一定是按照在文档流中的顺序来执行的)。当某个js文件执行时,一定是“已加载”的js文件中的最后一个:

var scripts = document.getElementsByTagName('script')

var currentScript = scripts[scripts.length - 1]

方法四比方法二更灵巧天才。