-2

这是失败的,但我不知道如何使它工作。

我有一个 php 数组:

$swipe_list = array('customers.html', 'index.html', 'atr_backplane.html');

这是为了知道哪些页面有轮播,需要触控支持。

所以我检查了 php 中的页面,如果它列出了 JS 将检查它的触摸设备并编写附加的 js 移动文件。

是因为服务器脚本在js可以在客户端检测到之前尝试运行吗?

<?php
if(in_array($selected, $swipe_list)){ ?>
<script type="text/javascript">

function isTouchDevice(){ document.write('<script type="text/javascript" src="js/jquery.mobile.custom.min.js"></script>')
}

</script>            
<?php }?>
<?php if(!in_array($selected, $exclude_list)){       
print '<script type="text/javascript" src="js/camera.js"></script>';
}
?>
4

3 回答 3

1

当您document.write在页面加载后使用时,可能会发生各种不好的事情。我不记得确切的原因,但我知道它以某种方式破坏了 DOM。

最好的办法是在不破坏 DOM 的情况下动态地包含脚本,而是使用类似这样的东西:

function isTouchDevice(){
    var script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = 'js/jquery.mobile.custom.min.js';
    document.getElementsByTagName('head')[0].appendChild(script);
}

这将创建脚本元素并将其附加到文档的头部。

于 2013-07-04T15:42:26.250 回答
1

你的问题在这里,我认为:

function isTouchDevice(){ document.write('<script type="text/javascript" src="js/jquery.mobile.custom.min.js"></script>')
}

这条线什么都不做的原因有很多。

首先,函数isTouchDevice被定义,然后从不调用(至少在你的例子中没有)

其次,在文档加载后将文本写入文档并不是加载外部脚本的可行方法。

根据我收集的信息,您想要这样做:(如果您不喜欢这条路线,也可以使用 phpprint或函数将脚本标签打印到文档中)echo

<?php
if(in_array($selected, $swipe_list))
{ 
?>

   <script type="text/javascript" src="js/jquery.mobile.custom.min.js"></script>

<?php 
}

if(!in_array($selected, $exclude_list))
{

?> 

   <script type="text/javascript" src="js/camera.js"></script>

<?php
}
?>
于 2013-07-04T15:42:18.217 回答
0

不确定您的问题是否与包含 js 文件有关,但我认为如果您只是删除 document.write 并包含您的脚本,那么它应该可以工作:

    <?php
if(in_array($selected, $swipe_list)){ ?>

  <script type="text/javascript" src="js/jquery.mobile.custom.min.js"></script>
<?php
} 

if(!in_array($selected, $exclude_list)){       
?>
   <script type="text/javascript" src="js/camera.js"></script>
<?php
}
?>

试试看 :)

于 2013-07-04T15:42:21.917 回答