为什么CSS无法在我的打印iframe中持续加载?

时间:2019-05-30 14:48:26

标签: javascript jquery html css

因此,我的页面上有一个要打印的div。它使用bootstrap和fontawesome看起来不错。要进行打印,我有一个按钮来创建一个iframe,将externalHTML复制到其主体中,并在其头部复制一些CSS和js,进行一些修改以适合A4纸,然后将其打印出来并移除。事实是,我第一次单击该按钮时,它完全按照我想要的方式精美地显示了chrome的打印页面,但是当我再次单击该按钮时,它会松开某些样式。

我在chrome的devtools的网络标签上注意到,js和css文件第一次加载就很好,但是之后在显示打印窗口时它显示为待处理,仅在我关闭后才加载。

这是按钮调用的功能:

function print1(elem)
{
    $('<iframe>', {
        id: 'printFrame',
        name: 'printFrame',
        class: 'printFrame',
        style: 'display: none'
    }).appendTo('body').contents()

    .find('head')
        .append('<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />')
        .append('<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css" integrity="sha384-mzrmE5qonljUremFsqc01SB46JvROS7bZs3IO2EmfFsd15uHvIt+Y8vEf7N7fWAU" crossorigin="anonymous">')
        .append('<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto|Roboto+Condensed">')
        .append('<link rel="stylesheet" href="/css/wscustom.css" type="text/css">')
        .append('<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js" />')
        .append('<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" />')
        .append($('style')[0].outerHTML)
        .parent()

    .find('body')
        .css('font-family', 'Roboto, sans-serif')
        .css('font-size', '14px')
        .css('line-height', '1.428571429')
        .css('color', '#333')
        .css('box-sizing', 'border-box')
        .append('<div class="container">')
        .find('.container')
        .append($('#' + elem).clone())

    .find('div.col-xs-12.col-md-6.col-lg-4')
        .removeClass('col-xs-12').removeClass('col-md-6').removeClass('col-lg-4').addClass('col-4')
        .css('width', '31.7%')
        .css('margin', '5px')
        .css('height', '514px')
        .css('float', 'left')
        .css('position', 'relative')
        .find('.fa-redo').hide();

    window.frames['printFrame'].focus();
    window.frames['printFrame'].print();
    $("#printFrame").remove();
}

就像我上面提到的那样,我怀疑它与打开打印窗口时挂在“挂起”的js和css文件有关。

除了缺少许多自举样式外,显示工作原理(我第一次单击该按钮时)的一个细节是蓝色和灰色的字体。第一次单击后,它有时显示为黑色,有时根本不显示。

任何见解将不胜感激。

1 个答案:

答案 0 :(得分:0)

可能是在加载所有内容之前进行打印。将您的打印操作放在iframe中,而不是在父页面中,然后将其包装在READY处理程序中。

class Hash():

    def __init__(self, user):
        self.max = user
        self.table = {}

    def isFull(self):
        if len(self.table) == self.max:
            return True
        else:
            return False
    def insert(self,item):
        if self.isFull():
            print('Hash table is full')
        else:
            hashing = self.index(item)
            if hashing not in self.table:
                self.table[hashing] = item
            else:
                for a in self.table:
                    if self.table[a] == None:
                        self.table[a] = item
        return self.table

    def index(self,item):
        hashval = int(item) % self.max
        return hashval


    def searching(self,item):
        pass

user = int(input('Enter a number for the maximum number of items that can be stored in the hash table: '))
h = Hash(user)
h.insert(5)
h.insert(6)