【问题标题】:Check if device is mobile in Flask检查设备是否在 Flask 中移动
【发布时间】:2019-03-27 10:46:36
【问题描述】:

我正在使用 Flask 和 Materialize 显示 PDF 文件列表

<table class="highlight responsive-table">
    <thead>
        <th class="left-align"><i class="material-icons">call</i></th>
        <th class="left-align"><i class="material-icons">email</i></th>
        <th class="center-align"><i class="material-icons">picture_as_pdf</i></th>
    </thead>
    <tbody>
        {% for doc in docs %}
            <tr>
                <td>{{doc.phone if doc.phone}}</td>
                <td>{{doc.email if doc.email}}</td>
                <td>
                    <a href="#modal{{loop.index}}" class="modal-trigger"><i class="material-icons">open</i> Ouvrir</a>
                </td>
            </tr>
            <div class="modal" id="modal{{loop.index}}">
                <iframe src="/cv/{{doc.name}}" scrolling="no" width="100%" height="100%"></iframe>
            </div>
        {% endfor %}
    </tbody>
</table> 

PDF 使用 iframe 显示在模式窗口中。

当我在移动设备中打开页面时,它没有以模式显示 PDF,而是提示我下载 pdf,就好像我试图直接下载它一样。当我在 Flask 中使用 for 循环时,我会收到每个 PDF 的下载提示。我想知道是否有办法检查用户代理是否是移动的,如果是这样,那么我将显示指向 pdf 的链接而不是模式窗口。

【问题讨论】:

  • 不要问基本的“有没有办法做 X”的问题,这只是将应该在这里进行的研究直接外包给我们。
  • HTML 中有一个错误:div 位于表格行之间而不是表格单元格中。如果你解决它有帮助吗?
  • 它在桌面上运行良好问题是移动端每次遇到带有 src 的 iframe 时都会提示下载 pdf

标签: javascript css iframe flask mobile


【解决方案1】:

我使用 Flask-Mobility 解决了这个问题。它允许检测设备是否是移动的

from flask_mobility import Mobility

...

app = Flask(__name__)
Mobility(app)

...

{% for doc in docs %}
    <tr>
        <td>{{doc.phone if doc.phone}}</td>
        <td>{{doc.email if doc.email}}</td>
        <td>
            {% if request.MOBILE %}
                <a href="/cv/{{doc.name}}" target="_blank"><i class="material-icons">open</i> Ouvrir</a>
            {% else %}
                <div class="modal" id="modal{{loop.index}}">
                    <iframe src="/cv/{{doc.name}}" scrolling="no" width="100%" height="100%"></iframe>
                </div>
                <a href="#modal{{loop.index}}" class="modal-trigger"><i class="material-icons">open</i> Ouvrir</a>
            {% endif %}
       </td>
    </tr>
{% endfor %} 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-02
    • 1970-01-01
    • 2021-09-22
    • 1970-01-01
    相关资源
    最近更新 更多