Skip to content
This repository

Variable in url(..) not possible #190

Closed
tristanlins opened this Issue February 02, 2011 · 8 comments

9 participants

Tristan Lins Luke Page Ed Finkler Chase Wilson Alexis Sellier Ben Hockey Colin Snover Jim Dalton Mohamed Meligy
Tristan Lins

I tried to make a function, that using an argument as url(..) value.

e.a.

.give-a-background(@bg) {
    background: url(@bg) no-repeat left center, ...;
}

.css-class {
    .give-a-background("images/foo.png");
}

i got a "could not call charAt of undefined" from line 2183 (v 1.0.41), because val.value is undefined.

currently its only possible this way

.give-a-background(@bg) {
    background: @bg no-repeat left center, ...;
}

.css-class {
    .give-a-background(url("images/foo.png"));
}
Ed Finkler

Running into this myself. Would be extremely handy for setting base paths.

Chase Wilson

Try This:

@base: "//";
.background(@image:'', @left:0, @top:0,@repeat:no-repeat){
    @url: %('%s%s',@base, @image);
    background: url(@url) @left @top @repeat;
}
Alexis Sellier
Owner

That's odd, it works just fine here.

Chase Wilson

@cloudhead I was pointing out to funkatron & trilin how I got it to work.

Ben Hockey

for anyone else who comes across this issue i found i couldn't get @jiggliemon's solution to work (less 1.1.4) but based on http://lesscss.org/#-string-interpolation this worked for me

.background-image (@url) {
    background-image: url("@{url}");
}

i suppose this ticket could be closed?

Colin Snover

This only happens in browser environments and is caused by the relative path “fixing” code in the tree.URL ctor. It does not check that val.value actually exists before trying to operate on it.

Jim Dalton

This is an issue when trying to use Twitter Bootstrap 2.0 with less.js in the browser environment.

Bootstrap uses the url(@url) format to pull sprite images in in sprites.less. less.js chokes on the undefined val.value that's passed to tree.URL() and an error is thrown, causing bootstrap not to load.

@csnover 's change resolves the issue for me.

I have updated my local copy of less.js so it's smooth sailing for me, but since this issue prevents Twitter Bootstrap 2.0 from running in the browser environment I hope it will get resolved soon, since others are probably having the same problem. E.g. I'm guessing this SO question might be related: http://stackoverflow.com/questions/8095499/twitter-bootstrap-wont-work-with-less-js

Deleted user Unknown referenced this issue from a commit February 27, 2012
Commit has since been removed from the repository and is no longer available.
Mohamed Meligy
Meligy commented May 24, 2012

Is the fix available in current release? (asking as I see the bug is still open).

Luke Page lukeapage closed this in 2c75e4f August 18, 2012
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.