在SilverStripe中的页脚后插入JavaScript
为什么我的JavaScript出现在页脚后面?下面是我在布局(Page.ss)中的代码:在SilverStripe中的页脚后插入JavaScript,javascript,silverstripe,phaser-framework,Javascript,Silverstripe,Phaser Framework,为什么我的JavaScript出现在页脚后面?下面是我在布局(Page.ss)中的代码: $Title window.onload=函数(){ var game=new Phaser.game(800600,Phaser.AUTO,,{preload:preload,create:create}); 函数预加载(){ game.load.image('logo','phaser.png'); } 函数create(){ var logo=game.add.sprite(game.world.c
$Title
window.onload=函数(){
var game=new Phaser.game(800600,Phaser.AUTO,,{preload:preload,create:create});
函数预加载(){
game.load.image('logo','phaser.png');
}
函数create(){
var logo=game.add.sprite(game.world.centerX,game.world.centerY,'logo');
logo.anchor.setTo(0.5,0.5);
}
};
$Form
$CommentsForm
默认情况下,SilverStripe包含页面正文底部的所有JavaScript文件。这是为了允许在加载任何JavaScript之前加载所有其他站点资源
如果布局或包含模板中有脚本标记,则会将脚本移动到主体标记的底部
如果不想移动脚本标记,可以在页面\u控制器init()
函数中:
类页面\u控制器扩展ContentController{
公共函数init(){
父::init();
要求:将_write_js_设置为_body(false);
}
}
注意,这将把您的所有需求(包括JavaScript文件)移动到
标记。如果您想要更多的控制,另一个选项是使用此选项:
然后将以下内容添加到页面\控制器::init或mysite/\ u config.php:
Requirements::set_backend(new BetterRequirementsBackend());
并加上:
<!-- INSERT JS HERE -->
及
到您的模板。通过这种方式,您可以精确控制注射发生的位置。请注意,您可能希望在上面的类中将第23行更改为=false,或在yaml config中重写它。I添加了Requirements::set_write_js_to_body(false);在_config.php中,我的javascript输出仍然显示在页面底部?谢谢。我做了个测试,它对我很有用。在你的配置中,你可以把die('Hello')代码>测试该行是否被调用?似乎正在调用Requirements::set_write_js_to_body(false)。但是Javascript输出仍然在底部?请在您的Page.php文件中,在类页面下的public function init()部分中尝试_Controller@user3257693-谢谢你的反馈。我根据你的建议编辑了我的答案。
<!-- INSERT JS HERE -->
<!-- INSERT CSS HERE -->