标签: external-script

有没有理由不使用<script defer> TODAY?

曾几何时,有很多激烈的争论<script><head><body>.

许多SO帖子已经指出了最佳实践/经验法则<script><body>不阻止html解析器之前放置前端,从而更快地获得第一次屏幕绘制和更快的客户端DOM访问,从而获得更好的用户体验.

这必须是重复的("□")╯

等等...... 现在<script>可以deferred,实际上已经有一段时间了!

老帖说

延迟脚本可能会导致JS依赖问题

不,它不会.它在解析DOM时立即保留执行顺序.

它不适用于跨供应商

是的,它曾经是,但今天它几乎得到了所有主要浏览器供应商的支持:http://caniuse.com/#search=defer,除了评论指出IE <10之外可能还有一些问题.

然而,它提供的好处似乎是显而易见的,至少在我看来,因为它在早期(在开始解析DOM之前)并行下载脚本,因此不需要稍后请求脚本并缩短整个脚本所需的时间.页面互动.

简而言之,这个问题类似于:任何不使用的好理由

<head>
...
<script src='cdn/to/jquery' defer>
<script src='cdn/to/bootstrap' defer>
<script src='script/depends/on/jqueryandbootstrap' defer>
</head>
Run Code Online (Sandbox Code Playgroud)

而是使用这个:

<body>
...
<script src='cdn/to/jquery'>
<script src='cdn/to/bootstrap'>
<script src='script/depends/on/jqueryandbootstrap'>
</body>
Run Code Online (Sandbox Code Playgroud)

注意:这可能是一个有很多讨论的"古老"话题.但是,随着Web技术的快速发展,浏览器供应商更好地与新的Web规范保持一致,许多旧的stackoverflow答案可能无法保持最新​​.

javascript html5 external-script deferred-loading

15
推荐指数
1
解决办法
1720
查看次数

如何异步加载具有document.write的第三方javascript标记

我们发布了一个javascript标记,例如<script src="http://ours.com/some.js"></script>哪些网站所有者在其网站上放置了像http://example.com这样的javascript标记我们想要动态地包含第三方js,例如其中可以包含document.write ,但当然如果我们试图用传统方法包括它,

var script_tag = document.createElement('script');
script_tag.type = 'text/javascript';
script_tag.src="http://third-party.com/some.js";
document.getElementById('target').appendChild(script_tag);
Run Code Online (Sandbox Code Playgroud)

我们从浏览器收到警告,

警告:忽略了从异步加载的外部脚本调用document.write().

我们如何解决这个问题?请记住,我们并不真正控制第三方脚本,因此我们无法更改其中的逻辑.我们正在寻找一种适用于所有浏览器的解决方案.

javascript document.write external-script

12
推荐指数
1
解决办法
7588
查看次数

如何将第三方脚本从Web动态加载到Angular2组件中

我试图从Web加载第三方脚本,而不是制作它的本地副本,并能够在脚本加载后使用第三方脚本的全局变量和函数.

更新:

  • 以下是我在普通JavaScript中尝试实现的示例,其中单击Visa Checkout按钮打开Visa Checkout对话框: Plunker JS链接
  • 这是我需要帮助的Angular2版本: Plunker Angular2链接

问题:以下组件未从Web加载脚本

import {Component} from '@angular/core'

@Component({
  selector: 'custom',
  providers: [],
  template: `
    <div>
      <h2>{{name}}</h2>
      <img class="v-button" role="button" alt="Visa Checkout" src="https://sandbox.secure.checkout.visa.com/wallet-services-web/xo/button.png">
      <script src="https://sandbox-assets.secure.checkout.visa.com/checkout-widget/resources/js/integration/v1/sdk.js">
</script>
    </div>
  `
})
export class CustomComponent {
  constructor() {
    this.name = 'Custom Component works!!'
  }
}
Run Code Online (Sandbox Code Playgroud)

external-script angular

9
推荐指数
2
解决办法
4750
查看次数

Chrome扩展程序:加载并执行外部脚本

我无法在我的chrome扩展程序中加载和执行外部js-script.看起来和这个问题一样,但我仍然无法弄清楚为什么它在我的情况下不起作用.

我的想法是,我希望在我的内容脚本中有一些默认函数,它应该解析网页内容.对于某些特定的网页,我想加载和使用特定的解析器,所以我尝试为wep页面加载正确的js-script,这个脚本应该扩展默认解析器的功能.

到现在为止我只尝试从外部脚本执行代码,但是有这样的错误: Unchecked runtime.lastError while running tabs.executeScript: No source code or file specified at Object.callback

这是我的manifest.json:

{
"name": "Extension name",
"version": "1.2",
"description": "My chrome extension",
"browser_action": {
    "default_popup": "popup.html",
},
"content_scripts": [{
    "css": [
        "style.css"
    ],
    "js": [
        "bower_components/jquery/dist/jquery.js",
        "bower_components/bootstrap/dist/js/bootstrap.js",
        "content.js"
    ],
    "matches": ["*://*/*"]
}],
"web_accessible_resources": [
    "frame.html",
    "logo-48.png"
],
"icons": {
    "16": "logo-16.png",
    "48": "logo-48.png",
    "128": "logo-128.png"
},
"permissions": [
    "tabs",
    "storage",
    "http://*/",
    "https://*/"
],
"manifest_version": 2
Run Code Online (Sandbox Code Playgroud)

}

这是popup.html

<!doctype html>
 <html> …
Run Code Online (Sandbox Code Playgroud)

javascript external-script google-chrome-extension

8
推荐指数
2
解决办法
9700
查看次数

运行脚本以填充django数据库

我想运行以下脚本来预先填充我的模型等名称...但是我得到一个错误.脚本是

first_names = first_names.split('\n')
last_names = last_names.split('\n')
phones=[str(i) for i in range(2310000000,2310999999, 1563)]
emails = ['test%s@test.com' %i for i in range(0,144)]

import os
os.environ['DJANGO_SETTINGS_MODULE']='project.settings'

from customer.models import Customer
from django.contrib.auth.models import User

users = User.objects.all()

if __name__ == "__main__":
    for i in range(10):
        customer = Customer(first_name=choice(first_names), last_name=choice(last_names),
                        telephone=choice(phones),email=choice(emails), creator=choice(users))
        customer.save()
Run Code Online (Sandbox Code Playgroud)

而错误是

Traceback (most recent call last):
  File "populatedb.py", line 431, in <module>
    from customer.models import Customer
ImportError: No module named customer.models
Run Code Online (Sandbox Code Playgroud)

dir_tree是(如果我可以"正确地"绘制)

-project_dir
|
|--customer
|--|
   |--models.py(etc...)
|
|--project(the settings …
Run Code Online (Sandbox Code Playgroud)

python django external-script

6
推荐指数
1
解决办法
7162
查看次数

Javascript onload和脚本回调函数,哪个优先?

我正在加载一个使用回调函数的外部脚本,它返回一些特定的数据.如果未收到此数据,则应显示错误.

这是我做的代码:

<script>
//setting initial state so that function will only work once
var visitors_loaded=false;  
var my_callback = function( data ) {
    if (visitors_loaded) return 0;
    if (data) { 
        //success: callback function is called and it has a proper data
    visitors_loaded=true;
    alert(JSON.stringify(data));
    }
    else alert ('error'); //something went wrong
};
</script>
<script onload="my_callback(null)" onerror="my_callback(null)"
src="https://api.clicky.com/api/stats/4?site_id=32020&sitekey=9a19b1a4d1171193&type=visitors&date=this-month&output=json&json_callback=my_callback"></script>
Run Code Online (Sandbox Code Playgroud)

正如你所看到的......很多东西可能会出错,所以我自然会添加一个onerror事件.如果您将脚本的主机名或域更改为不存在的内容,则会发生此错误事件.

但是,如果您只更改脚本的URL,它仍然可以连接到服务器并激活onload事件.我的回调函数不会被调用那些无效的请求,所以我也添加了一个onload处理程序.

现在的问题是,如果所有正常加载并返回数据,它将同时触发回调函数onload.我注意到在onload之前触发了回调函数并设置了visitor_loaded变量,以便只调用一次处理函数.

到目前为止,它在JS小提琴和我的离线网站中完美运行,但我想知道这是否是预期的行为?在onload处理程序之前,json_callback函数是否总是优先?

https://jsfiddle.net/5sfk9ht5/4/

javascript callback onload onerror external-script

6
推荐指数
1
解决办法
6789
查看次数

如何使用外部PHP脚本获取当前Joomla用户

我有一些用于AJAX查询的PHP脚本,但我希望它们能够在Joomla的身份验证系统的保护下运行.以下是安全的吗?有没有不必要的线路?

joomla-auth.php(与Joomla的index.php位于同一目录中):

<?php

define( '_JEXEC', 1 );
define('JPATH_BASE', dirname(__FILE__));
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );

/* Create the Application */
$mainframe =& JFactory::getApplication('site');

/* Make sure we are logged in at all. */
if (JFactory::getUser()->id == 0)
    die("Access denied: login required.");

?>
Run Code Online (Sandbox Code Playgroud)

test.php的:

<?php

include 'joomla-auth.php';

echo 'Logged in as "' . JFactory::getUser()->username . '"';

/* We then proceed to access things only the user
   of that name has access to. */ …
Run Code Online (Sandbox Code Playgroud)

php authentication joomla external-script

5
推荐指数
1
解决办法
2万
查看次数

使用 Flask-Script 和 cron 作业

所以我一直想在 Heroku 上运行的原型 Flask 应用程序上创建一个 cron 作业。在网上搜索我发现最好的方法是使用 Flask-Script,但我没有看到使用它的意义。我是否可以更轻松地访问我的应用逻辑和存储信息?如果我确实使用 Flask-Script,我该如何围绕我的应用组织它?我现在正在使用它来启动我的服务器,但并不真正了解它的好处。我的文件夹结构是这样的:

/app
   /manage.py
   /flask_prototype
      all my Flask code
Run Code Online (Sandbox Code Playgroud)

我是否应该将 Heroku Scheduler 运行的“script.py”放在与 manage.py 相同级别的 app 文件夹中?如果是这样,我是否可以访问flask_prototype 中定义的模型?

感谢您提供任何信息

cron heroku external-script flask

5
推荐指数
1
解决办法
1791
查看次数

jQuery只允许一个版本

我有一个第三方脚本,包括jquery(导致事情中断).我使用的是1.6版本,外部脚本使用的是旧版本.

如何强制只加载一个版本的jquery,它是我在页面上的版本而不是外部加载的版本?

jquery external-script

3
推荐指数
1
解决办法
621
查看次数

如何从另一个Python脚本向Docker执行本地python脚本?

让我澄清一下我想做什么。

我的本地计算机上有一个python脚本,它执行很多工作,在某些时候它必须调用另一个必须在docker容器中执行的python脚本。这样的脚本具有一些输入参数,并返回一些结果。

所以我想弄清楚该怎么做。

例:

def function()
    do stuff
         .
         .
         .
    do more stuff

    ''' call another local script that must be executed into a docker'''

    result = execute_python_script_into_a_docker(python script arguments)
Run Code Online (Sandbox Code Playgroud)

泊坞窗已在终端中以以下方式启动:

docker run -it -p 8888:8888 my_docker
Run Code Online (Sandbox Code Playgroud)

python external-script docker

2
推荐指数
1
解决办法
7026
查看次数