Javascript Document.write问题

时间:2012-10-12 21:10:34

标签: javascript javascript-events

我正在尝试获取下面的代码行,以帮助我在页面上写“<?php include('like.php'); ?>”,只有当访问者不使用移动设备但它似乎不起作用时。关于如何让它发挥作用的任何想法。

<script type="text/javascript">
<!--
if (screen.width > 699 {
document.write("<?php include('like.php'); ?>")
}
//-->
</script>

4 个答案:

答案 0 :(得分:3)

当JavaScript写入文档时,为时已晚 - PHP已将所有内容发送到浏览器。您的下一个最佳方法是进行AJAX调用以获取内容并将其附加到DOM。

假设您愿意使用像jQuery这样的JavaScript框架,那很简单:

if (screen.width > 699) {
    $.ajax({
        url      : '/like.php',
        dataType : 'html',
        success  : function(data) {
            $('#myContainer').html(data);
        }
    });
}

http://api.jquery.com/jQuery.ajax/

答案 1 :(得分:1)

正如其他人所提到的,你不能让JavaScript包含一段PHP代码并让它执行。由于PHP是在服务器端运行的,因此在将页面提供给客户端之前,按照您的建议注入代码只需将<?php include('like.php'); ?>作为纯文本写入文档。

但是,如果符合某个条件,您可以通过Ajax加载like.php的内容并将其注入DOM。

使用像jQuery这样的库,它非常简单,因为它提供了一种方法.load(),可以让您将内容加载到DOM中。你可以这样做:

// Wait for the DOM to be ready
$(function () {
    // Check the width of the screen
    if (screen.width > 699) {
        // Load the content and add the HTML to an element
        $('#id-of-element-to-add-content-to').load('like.php');
    }
});

在上面的示例中,like.php的内容将加载到ID为id-of-element-to-add-content-to的HTML元素中,但您可以使用符合您需要的任何您喜欢的选择器。如果您想要替换整个页面,可以改为$('body').load('like.php');

有关可用jQuery选择器的更多信息:http://api.jquery.com/category/selectors/

答案 2 :(得分:0)

javascript在浏览器上执行并且php在服务器上执行,因此,您需要添加if条件然后包含

答案 3 :(得分:0)

您可以测试用户代理服务器端,如果不是来自移动设备,则附加该行