簡體   English   中英

用jquery添加css文件

[英]adding css file with jquery

我正在創建一個彈出窗口,我想向該彈出窗口添加一個 css 文件。 下面是彈出窗口的代碼。 我有一個創建彈出窗口的 JavaScript。

<a href="popupwindowcontent.xhtml" title="Print" class="popupwindow">Print1</a>

現在我想向這個彈出窗口添加一個 css 文件。 我試過類似的東西

$('.popupwindow').append('<link rel="stylesheet" href="css/style2.css" type="text/css" />');


 $('head').append('<link rel="stylesheet" href="css/style2.css" type="text/css" />');

但它不起作用。

$('head').append('<link rel="stylesheet" href="style2.css" type="text/css" />');

這應該有效。

這就是我使用 jQuery ajax 添加 css 的方式。 希望它可以幫助某人..

$.ajax({
            url:"site/test/style.css",
            success:function(data){
                 $("<style></style>").appendTo("head").html(data);
            }
        })
    var css_link = $("<link>", {
        rel: "stylesheet",
        type: "text/css",
        href: "yourcustomaddress/bundles/andreistatistics/css/like.css"
    });
    css_link.appendTo('head');

只是我的幾美分……有時最好確保沒有任何重復……所以我們在 utils 庫中有下一個函數:

jQuery.loadCSS = function(url) {
    if (!$('link[href="' + url + '"]').length)
        $('head').append('<link rel="stylesheet" type="text/css" href="' + url + '">');
}

如何使用:

$.loadCSS('css/style2.css');

試着反過來做。

$('<link rel="stylesheet" href="css/style2.css" type="text/css" />').appendTo('head');

您的問題是您的選擇器用於錨元素<a> 您將<a>標記視為代表頁面,但事實並非如此。

只要需要 css 的頁面正在執行此選擇器, $('head')就會起作用。

為什么不簡單地將 css 文件添加到相關頁面。 從另一個頁面動態嘗試此操作的任何特殊原因? 我什至不熟悉將 css 注入到這樣的遠程頁面的方法......似乎這將是一個主要的安全漏洞。

補充你的推理:

然后你應該簡單地向頁面傳遞一個參數,使用javascript讀取它,然后根據參數做任何需要的事情。

我不認為你可以附加到你正在實例化的窗口中......我知道如果 url 位於不同的域(XSS 和所有爵士樂)上,你不能這樣做,但是你可以從那個窗口說話並訪問父窗口的元素,假設它們在同一個域中。 最好的辦法是在您正在加載的頁面上附加樣式表,如果該頁面不在同一個域中(例如嘗試重新設計其他人的頁面),您將無法這樣做。

您是否嘗試過簡單地使用 media 屬性作為您的 css 參考?

<link rel="stylesheet" href="css/style2.css" media="print" type="text/css" />

或者,如果您不希望打印版本使用該樣式,則將其設置為 screen:

<link rel="stylesheet" href="css/style2.css" media="screen" type="text/css" />

這樣您就不需要動態添加它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM