2012-10-12 74 views
-1

我試圖獲得下面的代碼行,以幫助我在頁面上只寫「<?php include('like.php'); ?>」,只有當訪問者不使用移動設備,但它似乎沒有工作。任何想法如何讓它工作。Javascript Document.write問題

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

它不工作方式......你不能讓javascript寫PHP .. – kingkode

+0

你不能寫這樣的事情,標籤<$php ... $>是服務器端 –

+0

另外,爲什麼你不應該使用document.write:http://stackoverflow.com/questions/802854/why-is-document-write-considered-a-bad-practice – Vinay

回答

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的內容將被加載到HTML元素的ID爲id-of-element-to-add-content-to,但是你可以使用你喜歡的符合您需要的任何選擇。如果您要替換頁面的整個主體,則可以改爲$('body').load('like.php');

瞭解可用的jQuery選擇:http://api.jquery.com/category/selectors/

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/

+0

我該如何解決它? –

0

JavaScript的執行在瀏覽器和PHP的服務器上執行的話,你需要添加如果條件,然後包括

0

您可以測試用戶代理服務器端並追加該行,如果不是從移動設備