曾几何时,有很多激烈的争论<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标记,例如<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().
我们如何解决这个问题?请记住,我们并不真正控制第三方脚本,因此我们无法更改其中的逻辑.我们正在寻找一种适用于所有浏览器的解决方案.
我试图从Web加载第三方脚本,而不是制作它的本地副本,并能够在脚本加载后使用第三方脚本的全局变量和函数.
更新:
问题:以下组件未从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)
我无法在我的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) 我想运行以下脚本来预先填充我的模型等名称...但是我得到一个错误.脚本是
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) 我正在加载一个使用回调函数的外部脚本,它返回一些特定的数据.如果未收到此数据,则应显示错误.
这是我做的代码:
<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函数是否总是优先?
我有一些用于AJAX查询的PHP脚本,但我希望它们能够在Joomla的身份验证系统的保护下运行.以下是安全的吗?有没有不必要的线路?
<?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)
<?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) 所以我一直想在 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 中定义的模型?
感谢您提供任何信息
我有一个第三方脚本,包括jquery(导致事情中断).我使用的是1.6版本,外部脚本使用的是旧版本.
如何强制只加载一个版本的jquery,它是我在页面上的版本而不是外部加载的版本?
让我澄清一下我想做什么。
我的本地计算机上有一个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)