我想直接从标准链接链接到搜索结果页面.举一个我希望的例子,这里有一些伪代码:
<a href = "https://www.google.com/search?keywords=My+Search+Parameters">Click here to search Google</a>
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?我想将我的用户直接重定向到搜索结果页面,以便他们可以在网络上看到真实的结果.
我在网站上有几个页面,每个页面使用相同的标题.我想知道是否有一些方法可以简单地引用一个带有html的文件,类似于这个伪代码中的标题类:
<!-- Main Page -->
<body>
<html_import_element src = "myheadertemplate.html">
<body>
Run Code Online (Sandbox Code Playgroud)
然后在一个单独的文件中:
<!-- my header template html -->
<div>
<h1>This is my header</h1>
<div id = "navbar">
<div class = "Tab">Home</div>
<div class = "Tab">Contact</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
这样我就可以编写标题html一次,然后通过编写一个简单标记将其导入到我需要它的每个页面中.这可能吗?我可以用XML做到这一点吗?
好了,所以,我所面临的问题是这样的:我的手机火狐浏览器不检索正确的价值观window.innerWidth,document.documentElement.clientWidth,的甚至宽度div风格的页面加载后,占据整个客户端窗口.
我并不疯狂,我的代码在其他所有浏览器中都运行良好!出于某种原因,Firefox使用默认值初始化这些值,然后在以后获取正确的值.如果我在任何时候使用a中断我的JavaScript,那么alert()这些属性之后会神奇地变得准确.
我已经在网上搜索了一个答案,我所能找到的只是一个黑客解决方法:window.setTimeout用来延迟使用这些属性,直到他们有时间正确填充.这很疯狂!用户希望速度,而不是额外的延迟只是为了在Firefox浏览器上查看我的网站.
我不明白的是,div在值变得准确之前,我可以设置一个完全填充客户端窗口.我通过将div的id的宽度和高度设置为100%来在css中执行此操作.document.documentElement基本上与document.getElementById("my_div");所有文档元素加载后相同,那么,当浏览器div首先没有正确的客户端窗口尺寸时,它应该知道应该有多大?
我已经尝试在一个内部运行我的代码,window.addEventListener("load",function(event_){ //My Code });但仍然不会生成这些值.之后是否有页面加载事件window.onload?
如果有人能告诉我为什么只有Firefox手机似乎显示出这种奇怪的行为,我会给你一个精神上的高五.
以下是重新创建问题的示例代码:
<!DOCTYPE HTML>
<html>
<head>
<!-- Added " after javascript during edit. -->
<script type="text/javascript">
window.addEventListener("load",function(event_){
var output=document.getElementById("output");
/* Returns some default value like 980. */
output.innerHTML=window.innerWidth;
alert("After this alert, the value will change.");
/* Returns an accurate value like 511. */
output.innerHTML=window.innerWidth;
});
</script>
<!-- Added title during …Run Code Online (Sandbox Code Playgroud) 假设我load向窗口添加一个事件,如下所示:
window.addEventListener("load",initialize);
Run Code Online (Sandbox Code Playgroud)
我应该在事件被触发后从窗口中删除load事件监听器吗?它只发射一次,但在发生这种情况后会继续听吗?
这很简单:
function initialize(event_){
/* Just by adding this line. */
window.removeEventListener("load",initialize);
}
Run Code Online (Sandbox Code Playgroud)
但这是否过度或者实际上是否有利于我的计划的表现?我只是问,因为"加载"事件只触发一次,所以如果它只是解决了它就会有意义.我从来没有听说过一个自我解决的倾听者,但是......有什么想法吗?
编辑:另外,我并不特别关注"加载"事件,只是监听器继续监听只触发一次的事件的一般情况.
我想知道将JavaScript代码的主体封装在对象中是否效率更高或更低?这样,程序的整个范围将与窗口等其他范围分开.
例如,如果我在JavaScript文件中有以下代码:
/* My main code body. */
var somevar1=undefined;
var somevar2=undefined;
var somevarN=undefined;
function somefunction(){};
function initialize(){/* Initializes the program. */};
/* End main code body. */
Run Code Online (Sandbox Code Playgroud)
我可以将主代码体封装在一个对象中:
/* Encapsulating object. */
var application={};
application.somevar1=undefined;
application.somevar2=undefined;
application.somevarN=undefined;
application.somefunction=function(){};
application.initialize=function(){/* Initializes the program. */};
Run Code Online (Sandbox Code Playgroud)
我的逻辑是,由于JavaScript搜索范围内的所有变量,直到找到正确的变量,因此将应用程序特定的函数和变量保留在自己的范围内将提高效率,尤其是在存在大量函数和变量的情况下.
我唯一关心的是这是不好的做法,或者这可能会增加新"应用程序"范围内变量和函数的查找时间.如果这是不好的做法或完全没用,请告诉我!谢谢!
我的目标是创建一个有效的游戏循环,该循环requestAnimationFrame用于更新显示画布和setTimeout更新游戏逻辑。我的问题是我应该将所有绘图操作放到requestAnimationFrame循环中还是仅将更新HTML画布的主绘图操作放到循环中?
我所说的“所有绘制操作”是所有缓冲。例如,我将所有的精灵绘制到缓冲区,然后将缓冲区绘制到主画布。一方面,如果我将所有缓冲放入其中,则requestAnimationFrame不会在每次逻辑更新时都浪费cpu绘图,另一方面,绘图会占用大量cpu并可能导致requestAniomationFrame等待所有这些操作完成...将逻辑更新与绘图分开的目的是requestAnimationFrame不会因非绘图处理而陷入困境。
有没有人对使用这种创建游戏循环的方法有任何经验?而且不要说“只把它全部放进去requestAnimationFrame”,因为这会减慢渲染速度。我坚信将逻辑与绘图分开是必经之路。这是我正在谈论的示例:
/* The drawing loop. */
function render(time_stamp_){//First parameter of RAF callback is timestamp.
window.requestAnimationFrame(render);
/* Draw all my sprites in the render function? */
/* Or should I move this to the logic loop? */
for (var i=sprites.length-1;i>-1;i--){
sprites[i].drawTo(buffer);
}
/* Update the on screen canvas. */
display.drawImage(buffer.canvas,0,0,100,100,0,0,100,100);
}
/* The logic loop. */
function update(){
window.setTimeout(update,20);
/* Update all my sprites. */ …Run Code Online (Sandbox Code Playgroud) 我的本地 Node JS 测试服务器上的 Web 应用程序清单范围存在问题。我无法获得正确的范围,因为 IP 地址上的端口号妨碍了。我正在使用以下地址访问我的服务器:
https://192.168.0.101:2468/
Run Code Online (Sandbox Code Playgroud)
当我使用 Chrome 开发工具查看我的清单时,在“应用程序”选项卡下,它显示清单文件的 url 为::2468/manifest.json但:2468不是我的根文件夹中的目录。
我将所有文件保存在根目录中,包括server.js、manifest.json和索引,称为my-app.html
_ website-directory
|_ server.js
|_ manifest.json
|_ my-app.html
Run Code Online (Sandbox Code Playgroud)
在我的清单文件中,我有:
{
"scope": "./",
"start_url": "my-app.html"
}
Run Code Online (Sandbox Code Playgroud)
当我将代码上传到我的 Github Pages 站点时,一切正常:工作示例。我认为问题出在:2468我的 IP 地址后面。对于完全限定的域名,我不会遇到这个问题,就像我在 Github Pages 上遇到的那样。
如果我尝试将端口号放入清单的范围中,如下所示:
"scope": "./:2468/",
"start_url": "my-app.html"
Run Code Online (Sandbox Code Playgroud)
它破坏了我的清单的范围,我收到此警告:Manifest: property 'scope' ignored. Start url should be within scope of scope URL.这非常有道理,因为:2468它不是我的目录中的文件夹。这只是 Chrome 决定附加到我的清单文件的 URL 上的东西。
如何解析清单文件的范围以忽略端口号?为什么 Chrome …
scope localserver progressive-web-apps manifest.json web-app-manifest
我正在尝试将 .html 文件的内容附加到我的主页的正文中。基本上,我正在尝试制作一个可重用的 html 块,我可以使用简单的 JavaScript 函数将其加载到任何页面中。
这是我的导航栏的内容,我想重用的内容:
<div id = "navbar">
<div class = "Tab">
<h1>Home</h1>
</div>
<div class = "Tab">
<h1>Contact</h1>
</div
</div>
Run Code Online (Sandbox Code Playgroud)
那是在一个名为 navbar.html 的文件中
现在在我的主 index.html 中,我想通过执行以下操作来导入它:
<head>
<script src = "importHTML.js" type = "text/javascript"></script>
</head>
<body>
<script type = "text/javascript">
importHTML("navbar.html");
</script>
</body>
Run Code Online (Sandbox Code Playgroud)
这应该负责在 navbar.html 中导入 html。
importHTML.js 的内容是这样的:
function importHTML(url_) {
var request = new XMLHttpRequest();
request.addEventListener("load", function(event_) {
//This is the problem line of code
//How do I get the contents of my …Run Code Online (Sandbox Code Playgroud) 这是我遇到的一个相当具体的问题。该故障似乎只出现在最新的 Android 版 Chrome 更新中,因此规格如下:
应用版本:Chrome 45.0.2454.84
操作系统:安卓4.4.4;XT1031 内部版本/KXB21.14-L2.4
我使用的是 Moto G,但故障也发生在运行相同版本 Chrome 的三星上。无论如何,问题显然是touchstart事件中断了我的window.setTimeout游戏循环。这是代码:
(
function rafTouchGlitch() {
/////////////////
/* FUNCTIONS. */
///////////////
function touchStartWindow(event_) {
event_.preventDefault();
}
///////////////////////
/* OBJECT LITERALS. */
/////////////////////
var engine = {
/* FUNCTIONS. */
start : function(interval_) {
var handle = this;
(function update() {
handle.timeout = window.setTimeout(update, interval_);
/* Draw the background and the red square. */
display.fillStyle = "#303030";
display.fillRect(0, 0, display.canvas.width, display.canvas.height);
display.fillStyle = "#f00000";
display.fillRect(red_square.x, …Run Code Online (Sandbox Code Playgroud) 我正在编写一个 AJAX 站点,为了执行我导入的脚本,我必须创建新的相同脚本,以便 DOM 运行它们。我想知道是否有一种简单的内置方法或另一种简单的方法可以将一个脚本标记的所有属性复制到另一个脚本标记,而不必单独传输它们。
基本上我要找的是这个:
在 HTML 中:
<script id = "myscript" src = "somefile.js" type = "text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
在JS中:
var script = document.createElement("script");
script.innerHTML = document.getElementById("myscript").innerHTML;
script.attributes = document.getElementById("myscript").attributesList;
Run Code Online (Sandbox Code Playgroud)
我目前的做法是将每个属性单独分配给新的脚本对象,我认为这有点乏味。