2017-09-01 63 views
1

我使用不同的內容編碼具有多個頁面(索引到index.html)的網站,但是一個標題單腳。問題是我將我的footer.js文件鏈接到所有頁面(考慮到它需要相同的代碼),但問題是它在加載多個頁面時同時加載。防止在所有索引頁面中運行js文件

這是一個jQuery彈出,所以當我點擊index.html中顯示出來,它也顯示在contact.html

我不想修改我的代碼爲每一個頁面,特別是因爲它之後會動態的。

因此,這裏是我的javascript:

//open popup 
 
$('.cdv').on('click', function(event){ 
 
\t event.preventDefault(); 
 
\t $('.cd-popup').addClass('is-visible'); 
 
}); 
 

 
//close popup 
 
$('.cd-popup').on('click', function(event){ 
 
\t if($(event.target).is('.cd-popup-close') || $(event.target).is('.cd-popup')) { 
 
\t \t event.preventDefault(); 
 
\t \t $(this).removeClass('is-visible'); 
 
\t } 
 
}); 
 

 
//close popup when clicking the esc keyboard button 
 
$(document).keyup(function(event){ 
 
    \t if(event.which=='27'){ 
 
    \t \t $('.cd-popup').removeClass('is-visible'); 
 
    } 
 
    }); 
 

 

 
//open popup 
 
$('.pdq').on('click', function(event){ 
 
\t event.preventDefault(); 
 
\t $('#cd-popup-politique').addClass('is-visible'); 
 
}); 
 

 
//close popup 
 
$('#cd-popup-politique').on('click', function(event){ 
 
\t if($(event.target).is('.cd-popup-close') || $(event.target).is('#cd-popup-politique')) { 
 
\t \t event.preventDefault(); 
 
\t \t $(this).removeClass('is-visible'); 
 
\t } 
 
}); 
 

 
//close popup when clicking the esc keyboard button 
 
$(document).keyup(function(event){ 
 
    \t if(event.which=='27'){ 
 
    \t \t $('#cd-popup-politique').removeClass('is-visible'); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+0

我不太瞭解設置。你渲染一個頁面是不同的HTML文件的組合,多次加載相同的腳本,或者你是否模擬地(?)加載不同的頁面(在不同的標籤頁或窗口中),每個頁面都有它們正確的html文件?在後一種情況下,我沒有看到一個頁面中的點擊如何在其他頁面中產生任何效果(因爲它們在不同的標籤頁/窗口中)。也許這是你使用「頁面」這個詞讓我困惑。 – trincot

+0

這裏的交易: index.html>運行footer.js contact.html>運行footer.js dispo.html>運行footer.js ... footer.js>在所有連接(鏈接)到index.html文件 – Hatem

+0

的所有頁面上運行的單個文件,當我點擊第一個選項卡上的鏈接(顯示彈出窗口)時彈出窗口也是在所有其他標籤中顯示 – Hatem

回答

0

感謝您的幫助球員,但我認爲我解決了這個問題。

實際上是什麼導致這個錯誤是Codekit(我用它來編譯我的SASS文件並縮小js文件)。我無法解釋爲什麼,但是當我在沒有軟件的情況下在本地嘗試它並將它推到github上時,看看它是否有效,而不是它的工作。

所以如果有人能解釋它會很好,否則對於所有面臨同樣問題的人來說,只要不在乎codekit,如果你正在運行它。

謝謝。

0

你可以做到這一點有兩種方式,第一種是檢查URL路徑和執行代碼來顯示一個彈出只有它是否符合您的標準

var location = window.location.pathname; 

// assume it's an index page 
if (location === '/') { 

    // execute your code to show a popup 

} 

如果你的路徑將包含GET屬性,使用.indexOf(),而不是

對於此解決方案,您需要將pathname/index.html進行比較,具體取決於您的服務器設置。

第二個解決方案可能是.html文件中的全局變量,例如就在您包含主JavaScript文件之前。

<script> 
window.popup = true; 
</script> 

然後你可以檢查你的JavaScript中,如果這個變量有一個true值和執行代碼。

if (window.popup === true) { 

// show popup 

} 

文檔:Window.location - mdn

+0

謝謝你的幫助,但我試過了,它不起作用。我對JavaScript不是很熟悉,我只用jquery作爲前端。那麼,你確定.popup是一個有效的函數,因爲我在互聯網上搜索,沒有得到任何東西,或者我應該用具體的東西來替換它嗎? – Hatem

+0

第一種方法是一樣的,而fyi位置是一個全局變量,所以我們不能使用,所以我只是改變它,仍然不工作 – Hatem

+0

'.popup'在我的代碼中不是一個函數,它只是一個參數分配給'window'對象,我用'popup'作爲例子,它可以是任何事情,不管你喜歡什麼,你都可以命名它,然後你可以在你的代碼中的任何地方訪問'window.popup' 。 – Melcma

相關問題