2011-08-31 47 views
0

我正在使用一個名爲Reveal的插件,並試圖根據URL中是否存在變量(即www.mysite.com?status=new)來啓動它。我已經測試了GET狀態代碼(工作正常,回顯它),並且設置了按鈕被按下時顯示工作。兩個工作完美無瑕。但是,目標是如果狀態==新,則觸發該事件。這是我的代碼:PHP:調用Javascript命令

<? 
if($status == 'new'){ 
     echo '<script type="text/javascript">$(\'#myModal\').reveal(); 
</script>'; 
} 
?> 

不工作:/任何幫助?我已經嘗試過很多組合,並且沒有任何東西可以工作。我的代碼放在靠近頁面的底部(主體部分),不知道這問題的..

編輯:也試過這個(沒有工作):

<? 
if($status == 'new'){ 
     echo '<script type="text/javascript"> 
     $(document).ready(function() { 
      e.preventDefault(); 
     $(\'#myModal\').reveal(); 
    }); 
</script>'; 
} 
?> 

扎克

+1

究竟不起作用? JS獲得輸出嗎? 「status」是「新」嗎? –

+0

@Pekka:JS輸出,我檢查了源代碼。但實際的插件沒有開火.. – Zakman411

回答

2

上試試這個:

echo ' 
<script type="text/javascript"> 
$(document).ready(function(){ 
    $(\'#myModal\').reveal(); 
}); 
</script>'; 

爲M90已經建議,也許你執行腳本之前最好先加載了DOM。而且你可以把它放在任何地方,通常我把它放在頭上,但它很好。

+0

可能是一個onload事件,在整個頁面加載完成後會觸發。你在測試什麼瀏覽器? – SoLoGHoST

+0

完美工作..我做錯了什麼?檢查我的帖子我更新 - 嘗試等待DOM,但我做錯了什麼?雖然謝謝! – Zakman411

+0

這是你的'e'沒有被定義的事實。見下面的評論。 – m90

2

請注意,這種內聯JS將被瀏覽器立即執行,所以可能是因爲你試圖揭示的元素還沒有準備好顯示(因此沒有任何反應)。通常你會通過$(document).ready()來調用你的腳本來解決這個問題。見this article jQuery的網站

+0

我試過,以及..更新後。沒有工作:/ – Zakman411

+0

並確保jquery和揭示插件加載之前「調用任何jquery函數。因此,如果您的網頁在最後加載了JavaScript標記(按照建議的做法),那麼它將無法工作! –

+0

你的JS控制檯有任何錯誤嗎?我的第一個猜測是您發佈的代碼中未定義的「e」的問題。你需要防止默認行爲? – m90

0

只是想在這裏放一點點不同的方法:

// Example URL: 
// test.php?status=Message 

var $_GET = <?php echo json_encode($_GET); ?>; 

// alert($_GET['status']); 
// console.log($_GET);